Java 编码名称是UTF8还是UTF-8?

Java 编码名称是UTF8还是UTF-8?,java,httpclient,Java,Httpclient,某些httpclient要求我提供字符串字符集µ 我想知道是给它UTF8还是UTF8或UTF-8 尤其是在调用Charset时。forName(enc)UTF-8是标准配置,大多数人都使用它 以下是Java中使用的字符集列表: 注意事项 如果字符集工厂/单例类可以将Enum以及String作为参数,Enum在我看来永远是一个更安全、更好的选择。更易于使用,因为它使您无需处理不受支持的编码异常,对于Java7/Tomcat8.5,我使用:-Dfile.encoding=UTF-8-Dclient

某些httpclient要求我提供字符串字符集µ

我想知道是给它UTF8还是UTF8或UTF-8


尤其是在调用Charset时。forName(enc)

UTF-8
是标准配置,大多数人都使用它

以下是Java中使用的字符集列表:

注意事项

如果字符集工厂/单例类可以将
Enum
以及
String
作为参数,
Enum
在我看来永远是一个更安全、更好的选择。

更易于使用,因为它使您无需处理不受支持的编码异常,对于Java7/Tomcat8.5,我使用:-Dfile.encoding=UTF-8-Dclient.encoding.override=UTF-8

但是对于Java 8/tomcat 8.5,我得到了: java.nio.charset.IllegalCharsetNameException:UTF-8


所以我改为UTF8,标准名称是“UTF-8”。源代码(我使用jdk1.8.020)显示了更多细节:

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";
    }

对的尽可能使用
UTF-8
。有几次你会遇到
utf8
(),那么你应该花点时间来了解设计师是否认为他们的
utf8
UTF-8
不同。很好,我完全忘记了。我用Perl编写代码已经有一段时间了(我希望我不必再做这种事情了xD)@Konerak编写Perl实现的人可能想看看他是否能将错误处理unicode的程序数量从80%提高到99%。确实非常可怕。它是对的,它等于Charset.forName(“UTF-8”)。