Nem lehet a Charset.defaultEncoding helyett átadni explicite, hogy milyen charset legyen használva? A sun.jnu.encoding azt írja felül, hogy a parancssor milyen encodinggal jön be a processzbe. Lásd: https://happygiraffe.net/2009/09/24/java-platform-encoding/ De lehet, hogy ez nem standard, és ezért megváltoztathatják sima verziók között is a működését.
A Windows ugyanaz a két esetben? Nem a Windows ad át mást? Amit debuggolnék, hogy a Javában kiiratnám binárisan (A String char-jait számérték szerint) az argumentum értékét. Meg csinálnék egy C programot, ami szintén kiírja az argumentumait binárisan. Hogy mégis milyen kódolásban adja át a Windows azt a paramétert?