我正在编写代码并遇到以下问题。
Charset.forName("ASCII")
但是当我看着java时 文件 它只有
US-ASCII ISO-8859-1 UTF-8 UTF-16BE UTF-16LE UTF-16
但代码有效。 “ASCII”和“US-ASCII”在这种情况下是同义词吗?或者代码是否采用了一些默认值,因为'ASCII'无法识别? 这个场景中“ASCII”代表一个字符的字节数是多少?
我正在编写代码并遇到以下问题。
Charset.forName("ASCII")
但是当我看着java时 文件 它只有
US-ASCII ISO-8859-1 UTF-8 UTF-16BE UTF-16LE UTF-16
但代码有效。 “ASCII”和“US-ASCII”在这种情况下是同义词吗?或者代码是否采用了一些默认值,因为'ASCII'无法识别? 这个场景中“ASCII”代表一个字符的字节数是多少?
文件指出:
每个字符集都有一个规范名称,也可能有一个或多个 别名。规范名称由此名称方法返回 类。按照惯例,规范名称通常是大写的。该 别名方法返回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
文件指出:
每个字符集都有一个规范名称,也可能有一个或多个 别名。规范名称由此名称方法返回 类。按照惯例,规范名称通常是大写的。该 别名方法返回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
运行以下代码段,打印所有可用的字符集:
SortedMap<String,Charset> availableCharsets = Charset.availableCharsets();
Set<String> keySet = availableCharsets.keySet();
for (String key : keySet) {
System.out.println(key);
}
我在列表中看不到ASCII。看代码 defaultCharset()
在Charset类中显示如果 file.encoding
是无效的,默认为'utf-8'。
运行以下代码段,将'UTF-8'打印为默认字符集。
System.setProperty("file.encoding", "ASCII");
System.out.println(Charset.defaultCharset());
ASCII是US-ASCII的别名。它为每个字符使用7位字节。
注意:如果您想要紧凑和简洁,我建议使用ISO-8859-1。这也使用每个字符1个字节,但范围更广。它支持 \u0000
至 u00FF
而US-ASCII支持 \u0000
至 \u007F