如何在Java中获取unicode字符的十进制值?
我需要一种编程方式来获取String中每个字符的十进制值,以便我可以将它们编码为HTML实体,例如:
UTF-8:
著者名
十进制:
著者名
我怀疑你只是对从char
到int
的转换感兴趣,这是隐含的:
for (int i = 0; i < text.length(); i++) { char c = text.charAt(i); int value = c; System.out.println(value); }
编辑:如果你想处理代理对,你可以使用类似的东西:
for (int i = 0; i < text.length(); i++) { int codePoint = text.codePointAt(i); // Skip over the second char in a surrogate pair if (codePoint > 0xffff) { i++; } System.out.println(codePoint); }
好了看完Jon的post,仍然沉思着Java的代理人,我决定不那么懒,并谷歌了。 在Character类中实际上支持代理,它只是有点…回旋
所以这里是正确的代码,假设有效的输入:
for (int i = 0; i < str.length(); i++) { char ch = str.charAt(i); if (Character.isHighSurrogate(ch)) { System.out.println("Codepoint: " + Character.toCodePoint(ch, str.charAt(i + 1))); i++; } System.out.println("Codepoint: " + (int)ch); }