Свойство JVM -Dfile.encoding = UTF8 или UTF-8?

Я хотел бы знать, какова ценность свойства Java Virtual Machine (JVM), чтобы установить кодировку моего файла в UTF-8.

Я помещаю -Dfile.encoding=UTF8 или -Dfile.encoding=UTF-8?

Ответ 1

Это будет:

UTF8

См. здесь для определений.

Ответ 2

Если при запуске 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.

Ответ 3

Оба UTF8 и UTF-8 работают для меня.

Ответ 4

Это не прямой ответ, но очень полезный, если у вас нет доступа к тому, как запускается java: вы можете установить переменную окружения JAVA_TOOLS_OPTIONS на -Dfile.encoding="UTF-8", и каждый раз, когда запускается jvm, она подберет эту опцию.

Ответ 5

[INFO] BUILD SUCCESS
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
[INFO] BUILD SUCCESS
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
любом случае, у меня это работает :)