我想要做的是生成一个字符数组,表示某个 ISO/IEC 字符集中的某些 ASCII 值。比方说,如果我对 ISO/IEC 8859-7 字符集的 ASCII 值 211-217 感兴趣,那么结果应该是 { Σ, Τ, Υ, Φ, Χ, Ψ, Ω }。我试过这个:
for (int i = 211; i <= 217; i++) {
System.out.println(String.valueOf((char)i));
}
但结果是基于默认系统字符集的。
最佳答案
您无法将特定编码中的单个字符代码直接转换为 char
,因此您需要使用 byte[]
到 String
转换。由于 ISO-8859-7 是单字节编码,因此每个字符代码对应一个字节
:
Charset cs = Charset.forName("ISO-8859-7");
for (int i = 211; i <= 217; i++) {
String s = new String(new byte[] { (byte) i }, cs)
System.out.println(
String.format("Character %s, codepoint %04X", s, (int) s.charAt(0)));
}
编辑:使用上面给出的输出格式,您可以确保 Unicode 代码点正确解码,如 ISO-8859-7 指定的那样。 。如果您仍然看到 ?
而不是字符,则说明输出有问题 - 您的控制台不支持这些字符。
检查System.getProperty("file.encoding")
的结果 - 它应该是某种Unicode(UTF-8
等)。如果您从 IDE 运行代码,请检查其控制台编码设置的配置。
关于java - 如何获取由特定字符集的一系列 ASCII 值表示的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12413129/