Я хотел бы знать, какова ценность свойства 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