【发布时间】:2012-07-15 10:39:52
【问题描述】:
一些 httpclient 要求我提供一个字符串 charsetµ。
我想知道是否给它 UTF8 或 utf8 或 UTF-8?
尤其是在调用 Charset.forName(enc) 时
【问题讨论】:
标签: java httpclient
一些 httpclient 要求我提供一个字符串 charsetµ。
我想知道是否给它 UTF8 或 utf8 或 UTF-8?
尤其是在调用 Charset.forName(enc) 时
【问题讨论】:
标签: java httpclient
更容易使用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,IMO 总是一个更安全、更好的选择。
【讨论】:
UTF-8。有几次你会遇到utf8(Perl being a very scary example),那么你应该花一些时间了解设计师是否认为他们的utf8与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";
}
【讨论】:
Charset charset = Charset.forName("cp1254");
这对我来说是 utf-8 解决方案。你可以使用它。
【讨论】: