我想迭代字符集中的每个字符(主要是 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/