Подтвердить что ты не робот

Имя кодировки UTF8 или UTF-8?

Некоторые httpclient требуют, чтобы я дал строку charset.

Мне интересно, следует ли давать UTF8 или utf8 или UTF-8?

Особенно при вызове Charset.forName(enc)

4b9b3361

Ответ 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";
    }