一些 httpclient 要求我提供一个字符串 charsetµ。
我想知道是否给它 UTF8 或 utf8 或 UTF-8?
特别是在调用 Charset.forName(enc) 时
一些 httpclient 要求我提供一个字符串 charsetµ。
我想知道是否给它 UTF8 或 utf8 或 UTF-8?
特别是在调用 Charset.forName(enc) 时
更容易使用StandardCharsets.UTF_8,因为它省去了处理 UnsupportedEncodingExceptions 的麻烦
UTF-8
是标准的,大多数人都使用它。
以下是 Java 中使用的字符集列表:
http://docs.oracle.com/javase/8/docs/technotes/guides/intl/encoding.doc.html
注意
如果 charset factory/singleton 类可以Enum
作为参数,以及String
,Enum
is,IMO,总是一个更安全和更好的选择。
Charset charset = Charset.forName("cp1254");
这对我来说是 utf-8 解决方案。你可以使用它。
仅供参考,对于 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
标准名称是“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";
}