为Charset.forName(String)编码CharsetNames

时间:2012-09-23 23:36:50

标签: java character-encoding

我对Charset.forName(String charsetName)有疑问。有没有我可以参考的charsetNames列表?例如,对于UTF-8,我们使用“utf8”作为charsetName。 WINDOWS-1252,GB18030等怎么样?

4 个答案:

答案 0 :(得分:5)

Charset         Description

US-ASCII        Seven-bit ASCII, a.k.a. ISO646-US, a.k.a. the Basic Latin block of the Unicode character set
ISO-8859-1      ISO Latin Alphabet No. 1, a.k.a. ISO-LATIN-1
UTF-8           Eight-bit UCS Transformation Format
UTF-16BE        Sixteen-bit UCS Transformation Format, big-endian byte order
UTF-16LE        Sixteen-bit UCS Transformation Format, little-endian byte order
UTF-16          Sixteen-bit UCS Transformation Format, byte order identified by an optional byte-order mark

参考:http://docs.oracle.com/javase/7/docs/api/java/nio/charset/Charset.html

答案 1 :(得分:2)

Java中的charset名称取决于平台,StandardCharsets类中只有6个常量。

要查看所有字符集,请查看IANA。检查首选MIME名称和别名列。

答案 2 :(得分:1)

要列出安装在JVM中的所有字符集,可以使用以下命令 代码段(Java 8 SE或更高版本):

SortedMap<String, Charset> map = Charset.availableCharsets();
map.keySet().stream().forEach(System.out::println);

在我的系统上,它列出了大约170个字符集。

答案 3 :(得分:0)

需要 java Charset库,以仅接受一些基本编码:ASCII,Latin-1(ISO-8859-1)和一些UTF变体,您可以在{ {3}}。对于任何实际用途而言,这都是一个毫无用处的清单,除非您的范围仅限于Latin-1。实际上,Java类可以处理大量的编码,您可以在this answer页面上阅读这些编码。引用:

  

2019-04-04 07:09:46 - INFO - Adding job tentatively -- it will be properly scheduled when the scheduler starts java.io.InputStreamReaderjava.io.OutputStreamWriter类以及java.lang.String包中的类可以在Unicode和许多其他字符编码之间转换。 Java SE 8的不同实现之间支持的编码有所不同。java.nio.charset的类描述列出了Java SE 8的任何实现都需要支持的编码。

     

所有平台(Solaris,Linux和Microsoft Windows)的JDK 8以及Solaris和Linux的JRE 8支持本页上显示的所有编码。 Microsoft Windows的JRE 8可能会完整安装国际版本或欧洲语言版本。 [...]

Supported Encodings的其余部分由一个广泛的编码名称和同义词表组成,这就是OP历经多年的努力...