2009-12-21 2 views

ответ

7

Строки Java - это UTF-16 (big endian), поэтому кодовая точка Unicode может быть одним или двумя символами. В рамках этой кодировки Java может представлять код U + 1D50A (MATHEMATICAL FRAKTUR CAPITAL G) с использованием символов 0xD835 0xDD0A (Строковый литерал "\uD835\uDD0A"). Класс Character предоставляет методы для преобразования в/из кодовых точек.

// Unicode code point to char array 
char[] math_fraktur_cap_g = Character.toChars(0x1D50A); 
+0

Почему мы не используем 'int' type' math_fraktur_cap_g' читать суррогатные пары без BMP? как упомянуто [здесь] (https://stackoverflow.com/a/13112474/3317808) – overexchange

13

http://en.wikipedia.org/wiki/UTF-16

В вычислениях, UTF-16 (16-битная UCS/Unicode Transformation Format) является символом кодирования с переменной длиной для Unicode, способного кодировать весь репертуар Unicode. Форма кодирования отображает каждый символ в последовательность из16-битных слов. Символы известны как кодовые точки, а 16-разрядные слова называются единицами кода. Для символов в базовом многоязычной плоскости (BMP) получившееся кодирование представляет собой одно 16-разрядное слово. Для символов в других плоскостях кодировка приведет к получению пары 16-разрядных слов, которые также называются суррогатной парой . Все возможные кодовые точек от U + 0000 до U + 10FFFF, для суррогатной коды, за исключением точек U + D800-U + DFFF (которые не являются символов), однозначно отображается на UTF-16 независимо от точки кодовога текущее или будущее назначение персонажа или использовать.

+0

И см. Мой предыдущий ответ в SO для правильной итерации всех символов в строке Java. http://stackoverflow.com/questions/1527856/how-can-i-iterate-through-the-unicode-codepoints-of-a-java-string/1527891#1527891 –

3

Java использует UTF-16 для строк - в основном означает, что символы являются переменной шириной. Большинство из них вписываются в 16 бит, но те, которые находятся за пределами базовой многоязычной панели, занимают 32 бита. Это очень похоже на схему UTF-8.

Смежные вопросы