Как 16-битные символы Java поддерживают Unicode? - PullRequest
7 голосов
/ 21 декабря 2009

Javas char 16-битный, но в Юникоде гораздо больше символов - как Java справляется с этим?

Ответы [ 3 ]

13 голосов
/ 21 декабря 2009

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

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

8 голосов
/ 21 декабря 2009

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);
3 голосов
/ 21 декабря 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...