Кодировка Java UTF-16 Кодировка - PullRequest
2 голосов
/ 04 мая 2011

Функция, которая кодирует кодовую точку Unicode (целое число) в массив символов (байтов) в Java, в основном такова:

return new char[] { (char) codePoint };

Это просто приведение целочисленного значения к символу.

Я хотел бы знать, как на самом деле выполняется это приведение, код для этого преобразования, чтобы выполнить преобразование из целочисленного значения в символ, закодированный в UTF-16. Я пытался найти его в исходных кодах Java, но безуспешно.

Ответы [ 5 ]

9 голосов
/ 04 мая 2011

Я не уверен, о какой функции вы говорите.

Приведение действительное int кодовые точки на char будут работать для кодовых точек в основной многоязычной плоскости только из-за того, как UTF-16был определен.Чтобы преобразовать что-либо выше U + FFFF, вы должны использовать Character.toChars (int) для преобразования в кодовые единицы UTF-16.Алгоритм определен в RFC 2781 .

0 голосов
/ 04 мая 2011

Кроме того, в платформе Java уже используются массивы символов UTF-16.

0 голосов
/ 04 мая 2011

Поскольку char определено для хранения данных UTF-16 в Java, это все, что нужно сделать. Только , если вход является int (т. Е. Он может представлять кодовую точку Unicode U + 10000 или выше), для этого необходимы некоторые вычисления.Все значения char уже UTF-16.

0 голосов
/ 04 мая 2011

Все char в Java представлены внутри в UTF-16.Это просто сопоставление целочисленного значения этому char.

0 голосов
/ 04 мая 2011

Кодовая точка - это просто число, которое отображается на символ, реального преобразования не происходит.Кодовые точки Unicode указываются в шестнадцатеричном формате, поэтому все, что вы используете в шестнадцатеричном формате, будет соответствовать этому символу (или глифу).

...