Свойство JVM -Dfile.encoding = UTF8 или UTF-8? - PullRequest
57 голосов
/ 17 мая 2011

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

Я ставлю -Dfile.encoding=UTF8 или -Dfile.encoding=UTF-8?

Ответы [ 5 ]

57 голосов
/ 17 мая 2011

Это будет:

UTF8

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

15 голосов
/ 27 июля 2015

Если при запуске 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, без переноса, вы получите:

file.encoding: UTF8
defaultCharset: UTF-8

... отмечая, что кодировка по умолчанию была канонизирована с UTF8 до UTF-8.

8 голосов
/ 09 июня 2015

У меня работают и UTF8, и UTF-8.

7 голосов
/ 02 марта 2016

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

1 голос
/ 20 апреля 2019

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

...