Java Charset.forName("ASCII")或Charset.forName("US-ASCII")

11 java character-encoding

我正在编写代码并遇到以下问题.

Charset.forName("ASCII")
Run Code Online (Sandbox Code Playgroud)

但是当我查看java 文档时,它只有

US-ASCII    ISO-8859-1    UTF-8   UTF-16BE   UTF-16LE   UTF-16  
Run Code Online (Sandbox Code Playgroud)

但代码有效."ASCII"和"US-ASCII"在这种情况下是同义词吗?或者代码是否采用了一些默认值,因为'ASCII'无法识别?这个场景中"ASCII"代表一个字符的字节数是多少?

Mat*_*ert 21

文件指出:

每个字符集都有一个规范名称,也可能有一个或多个别名.规范名称由此类的name方法返回.按照惯例,规范名称通常是大写的.别名方法返回charset的别名.

此外,javadoc Charset.forName(String charsetName)告诉你:

charsetName - 请求的字符集的名称; 可以是规范名称或别名

使用此代码,您可以找到有关字符集的更多信息:

Charset ascii = Charset.forName("US-ASCII");
System.out.println(ascii.aliases());
// [ANSI_X3.4-1968, cp367, csASCII, iso-ir-6, ASCII, iso_646.irv:1983, ANSI_X3.4-1986, ascii7, default, ISO_646.irv:1991, ISO646-US, IBM367, 646, us]

System.out.println(ascii.newEncoder().maxBytesPerChar());
// 1.0

Charset utf8 = Charset.forName("UTF-8");
System.out.println(utf8.newEncoder().maxBytesPerChar());
// 3.0
Run Code Online (Sandbox Code Playgroud)