Как получить десятичное значение символа Unicode в Java? - PullRequest
7 голосов
/ 20 июля 2011

Мне нужен программный способ получить десятичное значение каждого символа в строке, чтобы я мог кодировать их как объекты HTML, например:

UTF-8:

著者名

Десятичное число:

著者名

Ответы [ 2 ]

14 голосов
/ 20 июля 2011

Я подозреваю, что вы просто заинтересованы в преобразовании из 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);
}
2 голосов
/ 20 июля 2011

Хорошо, прочитав пост Джона и все еще размышляя о суррогатах в 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);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...