К сожалению, свойство file.encoding
должно быть указано при запуске JVM; ко времени ввода вашего основного метода кодировка символов, используемая String.getBytes()
, и конструкторы по умолчанию InputStreamReader
и OutputStreamWriter
уже кэшированы.
Как указывает Эдвард Греч, в таком особом случае, как этот, переменная окружения JAVA_TOOL_OPTIONS
может использоваться для указания этого свойства, но обычно это делается так:
java -Dfile.encoding=UTF-8 … com.x.Main
Charset.defaultCharset()
будет отражать изменения в свойстве file.encoding
, но большая часть кода в основных библиотеках Java, которым необходимо определить кодировку символов по умолчанию, не использует этот механизм.
Когда вы кодируете или декодируете, вы можете запросить свойство file.encoding
или Charset.defaultCharset()
, чтобы найти текущую кодировку по умолчанию, и использовать соответствующий метод или перегрузку конструктора, чтобы указать его.