Я хотел бы знать, какова ценность свойства Java Virtual Machine (JVM), чтобы установить кодировку моего файла в UTF-8.
Я помещаю -Dfile.encoding=UTF8
или -Dfile.encoding=UTF-8
?
Я хотел бы знать, какова ценность свойства Java Virtual Machine (JVM), чтобы установить кодировку моего файла в UTF-8.
Я помещаю -Dfile.encoding=UTF8
или -Dfile.encoding=UTF-8
?
Это будет:
UTF8
См. здесь для определений.
Если при запуске Oracle HotSpot JDK 1.7.x на платформе Linux, где ваш язык предлагает UTF-8 (например, LANG=en_US.utf8
), если вы не установите его в командной строке с помощью -Dfile.encoding
, JDK будет по умолчанию file.encoding
и по умолчанию Charset
следующим образом:
System.out.println(String.format("file.encoding: %s", System.getProperty("file.encoding")));
System.out.println(String.format("defaultCharset: %s", Charset.defaultCharset().name()));
... дает:
file.encoding: UTF-8
defaultCharset: UTF-8
... предлагая по умолчанию UTF-8
на такой платформе.
Кроме того, если java.nio.charset.Charset.defaultCharset()
находит file.encoding
не установленным, он ищет java.nio.charset.Charset.forName("UTF-8")
, предполагая, что он предпочитает эту строку, хотя она хорошо сглажена, поэтому "UTF8" также будет работать нормально.
Если вы запускаете ту же программу на той же платформе с помощью java -Dfile.encoding=UTF8
, без hypen, она дает:
file.encoding: UTF8
defaultCharset: UTF-8
... отметив, что кодировка по умолчанию была канонизирована от UTF8
до UTF-8
.
Оба UTF8 и UTF-8 работают для меня.
Это не прямой ответ, но очень полезный, если у вас нет доступа к тому, как запускается java: вы можете установить переменную окружения JAVA_TOOLS_OPTIONS
на -Dfile.encoding="UTF-8"
, и каждый раз, когда запускается jvm, она подберет эту опцию.
[INFO] BUILD SUCCESS
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8[INFO] BUILD SUCCESS
любом случае, у меня это работает :)
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8