Имя кодировки UTF8 или UTF-8?
Некоторые httpclient требуют, чтобы я дал строку charset.
Мне интересно, следует ли давать UTF8 или utf8 или UTF-8?
Особенно при вызове Charset.forName(enc)
Ответы
Ответ 1
UTF-8
является стандартным, и большинство людей используют его.
Вот список кодировок, используемых в Java:
http://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html
NB
Если классы фабрики/синглтона charset могут принимать Enum
качестве параметра, а также String
, Enum
is, IMO, всегда более безопасный и лучший вариант.
Ответ 2
Проще использовать StandardCharsets.UTF_8, поскольку это избавляет вас от необходимости иметь дело с UnsupportedEncodingExceptions
Ответ 3
К вашему сведению, для Java 7/Tomcat 8.5 я использую: -Dfile.encoding = UTF-8 -Dclient.encoding.override = UTF-8
Но для Java 8/Tomcat 8.5 я получил: java.nio.charset.IllegalCharsetNameException: UTF-8
Поэтому я перешел на UTF8
Ответ 4
Стандартное название - "UTF-8". Исходный код (я использую jdk1.8.0_20) показывает более подробно:
UTF_8 extends Unicode {
public UTF_8() {
super("UTF-8", StandardCharsets.aliases_UTF_8); // show other aliases
// static final String[] aliases_UTF_8 = new String[]{"UTF8", "unicode-1-1-utf-8"};
}
public String historicalName() {
// return old name of UTF-8
return "UTF8";
}