如何在Java中获取unicode字符的十进制值?

时间:2011-07-20 18:08:51

标签: java unicode

我需要一种编程方式来获取String中每个字符的十进制值,以便我可以将它们编码为HTML实体,例如:

UTF-8:

著者名

十进制:

著者名

2 个答案:

答案 0 :(得分:14)

我怀疑您只对从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);
}

答案 1 :(得分:2)

好的看完Jon的帖子后仍然沉思着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);
    }