8

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

4

4 回答 4

6
字符集描述

US-ASCII 七位 ASCII,又名 ISO646-US,又名 Unicode 字符集的基本拉丁语块
ISO-8859-1 ISO 拉丁字母 No. 1,又名 ISO-LATIN-1
UTF-8 八位 UCS 转换格式
UTF-16BE 十六位 UCS 转换格式,大端字节序
UTF-16LE 十六位 UCS 转换格式,little-endian 字节顺序
UTF-16 十六位 UCS 转换格式,由可选字节顺序标记标识的字节顺序

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

于 2013-09-12T11:09:24.583 回答
2

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

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

于 2015-01-30T16:16:56.377 回答
1

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

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

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

于 2020-02-11T17:10:20.607 回答
0

java Charset 库只需要接受一些基本编码:ASCII、Latin-1 (ISO-8859-1) 和一些 UTF 变体,您可以在此答案中看到这些变体。对于任何实际目的而言,这都是一个非常无用的列表,除非您的范围仅限于 Latin-1。实际上,Java 类可以处理大量编码,您可以在Supported Encodings页面中了解这些编码。引用它:

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

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

页面的其余部分包含一个包含编码名称和同义词的扩展表,这就是 OP 多年前的样子......

于 2019-04-03T10:18:54.067 回答