java - 如何获取由特定字符集的一系列 ASCII 值表示的字符?

标签 java character-encoding

我想要做的是生成一个字符数组,表示某个 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/

相关文章:

java - 有没有办法用 Java 检查 .txt 文件的字符集编码?

java - mule3 服务中的字符集转换

Java:HashMap<String,String> 存储与键和值相同的值。

java - 方法捕获异常后可以再次调用自身吗?

java - 在 ant build 中包含 hibernate jar 依赖项

java多线程服务器客户端通信

html - IE8 不呈现某些 HTML 名称实体

sql - postgresql bug,查询找不到具有完全相同字符串的行

javascript - 如何使用 Javascript 转换字符编码? jQuery

java - spring boot配置中list的环境变量