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