java - 如何迭代/导航字符集中的每个字符(例如,US-ASCII 或 IBM037,按正确的顺序)?

标签 java

我想迭代字符集中的每个字符(主要是 US-ASCII 和 IBM037),然后以正确的字符集序列打印所有字母数字字符(或所有可打印字符)。是否可以不创建静态数组?

最佳答案

尝试以下操作以按照编码值的顺序打印所有有效字符。

public static void main(String... args) {
    printCharactersFor("US-ASCII");
    printCharactersFor("IBM037");
}

private static void printCharactersFor(String charsetName) {
    System.out.println("Character set map for " + charsetName);
    Charset charset = Charset.forName(charsetName);
    SortedMap<BigInteger, String> charsInEncodedOrder = new TreeMap<BigInteger, String>();
    for (int i = Character.MIN_VALUE; i < Character.MAX_VALUE; i++) {
        String s = Character.toString((char) i);
        byte[] encoded = s.getBytes(charset);
        String decoded = new String(encoded, charset);
        if (s.equals(decoded))
            charsInEncodedOrder.put(new BigInteger(1, encoded), i + " " + s);
    }
    for (Map.Entry<BigInteger, String> entry : charsInEncodedOrder.entrySet()) {
        System.out.println(entry.getKey().toString(16) + " " + entry.getValue());
    }
}

它会生成与 http://www.fileformat.info/info/charset/IBM037/grid.htm 匹配的内容

关于java - 如何迭代/导航字符集中的每个字符(例如,US-ASCII 或 IBM037,按正确的顺序)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34123750/

相关文章:

java - java将数组值左移

java - 错误 : Could not find or load main class Check. java

Java Synchronized 将一个类的所有同步方法相互同步?

java - Spring Boot + Thymeleaf 错误 java.lang.ClassNotFoundException : org. thymeleaf.dom.Attribute

java - 将带有逗号 ','的xml内容写入csv

java - Vaadin 和 jInstagram 不支持major.minor 版本51.0

java - 从 Maven 部署 WAR

java - 不同类之间的等待和通知方法

java - 对 JButton 进行编程以在单击时创建对象

java - Maven在尝试建立与数据库的连接的Spring项目构建中失败