Java 为Charset.forName(字符串)编码CharsetName

Java 为Charset.forName(字符串)编码CharsetName,java,character-encoding,Java,Character Encoding,我有一个关于Charset.forName(字符串charsetName)的问题。有我可以参考的字符集名称列表吗?例如,对于UTF-8,我们使用“utf8”作为charsetName。那么WINDOWS-1252、GB18030等呢 Charset Description US-ASCII Seven-bit ASCII, a.k.a. ISO646-US, a.k.a. the Basic Latin block of the Unicode character

我有一个关于Charset.forName(字符串charsetName)的问题。有我可以参考的字符集名称列表吗?例如,对于UTF-8,我们使用“utf8”作为charsetName。那么WINDOWS-1252、GB18030等呢

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 字符集描述 US-ASCII七位ASCII,也称ISO646-US,也称为Unicode字符集的基本拉丁块 ISO-8859-1 ISO拉丁字母表1,又称ISO拉丁字母表1 UTF-8八位UCS转换格式 UTF-16BE 16位UCS转换格式,大端字节顺序 UTF-16LE 16位UCS转换格式,小端字节顺序 UTF-16 16位UCS转换格式,字节顺序由可选字节顺序标记标识
参考:

Java中的字符集名称依赖于平台,类中只有6个常量


要查看您应该查看的所有字符集。检查首选MIME名称和别名列。

java字符集库只需要接受一些基本编码:ASCII、Latin-1(ISO-8859-1)和中列出的少量UTF变体。对于任何实际用途来说,这都是一个非常无用的列表,除非您的范围仅限于拉丁语-1。实际上,Java类可以处理大量的编码,您可以在页面中阅读到这些编码。引述:

java.io.InputStreamReader
java.io.OutputStreamWriter
java.lang.String
类和
java.nio.charset
包中的类可以在Unicode和许多其他字符编码之间转换。支持的编码在JavaSE8的不同实现之间有所不同。
java.nio.charset.charset
的类描述列出了任何JavaSE8实现都需要支持的编码

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


的其余部分由一个广泛的编码名称和同义词表组成,这就是多年前的OP…

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

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

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

最新的一个字符集在
SortedMap<String, Charset> map = Charset.availableCharsets();
map.keySet().stream().forEach(System.out::println);