Charset.forName(String)的编码字符集名称

10

我有一个关于Charset.forName(String charsetName)的问题。是否有一个可供参考的charsetNames列表?例如,对于UTF-8,我们使用"utf8"作为charsetName。那么WINDOWS-1252、GB18030等呢?


2
http://docs.oracle.com/javase/6/docs/technotes/guides/intl/encoding.doc.html和最新的http://download.java.net/jdk8/docs/technotes/guides/intl/encoding.doc.html - nullpotent
还有一个很好的讨论在 https://dev59.com/E3I-5IYBdhLWcg3wxbjv。 - Guido Simone
4个回答

7
字符集 描述
US-ASCII 七位ASCII,又称ISO646-US或Unicode字符集的基本拉丁块 ISO-8859-1 ISO拉丁字母表No.1,又称ISO-LATIN-1 UTF-8 八位UCS转换格式 UTF-16BE 十六位UCS转换格式,大端字节顺序 UTF-16LE 十六位UCS转换格式,小端字节顺序 UTF-16 十六位UCS转换格式,字节顺序由可选的字节顺序标记标识
参考文献:http://docs.oracle.com/javase/7/docs/api/java/nio/charset/Charset.html

3
Java中的字符集名称是与平台相关的,StandardCharsets类中只有6个常量。
要查看所有字符集,您应该查看IANA。检查首选MIME名称和别名列。

2
为了列出JVM中安装的所有字符集,您可以使用以下代码片段(Java 8 SE或更高版本):
SortedMap<String, Charset> map = Charset.availableCharsets();
map.keySet().stream().forEach(System.out::println);

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

0

Java Charset 库需要接受一些基本编码:ASCII、Latin-1(ISO-8859-1)和一些 UTF 变体,你可以在 this answer 中看到列出的列表。对于任何实际用途来说,这是一个相当无用的列表,除非你的范围仅限于 Latin-1。实际上,Java 类可以处理大量编码,你可以在 Supported Encodings 页面中了解更多。引用其中的一段:

java.io.InputStreamReaderjava.io.OutputStreamWriterjava.lang.String类以及java.nio.charset包中的类可以在Unicode和其他多种字符编码之间进行转换。支持的编码因Java SE 8的不同实现而异。对于java.nio.charset.Charset的类描述列出了任何Java SE 8实现都需要支持的编码。

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

页面的其余部分包括一个广泛的编码名称和同义词表,这正是OP多年前所追求的...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接