Javas char 16 бит, но Unicode имеет гораздо больше персонажей - как Java справляется с этим?Как Java 16 бит поддерживает Unicode?
ответ
Строки 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);
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 независимо от точки кодовога текущее или будущее назначение персонажа или использовать.
И см. Мой предыдущий ответ в SO для правильной итерации всех символов в строке Java. http://stackoverflow.com/questions/1527856/how-can-i-iterate-through-the-unicode-codepoints-of-a-java-string/1527891#1527891 –
Java использует UTF-16 для строк - в основном означает, что символы являются переменной шириной. Большинство из них вписываются в 16 бит, но те, которые находятся за пределами базовой многоязычной панели, занимают 32 бита. Это очень похоже на схему UTF-8.
- 1. 16 бит бит глубина
- 2. Является 16-бит wchar_t формально действительным для представления полного Unicode?
- 3. Как конвертировать 8 бит в 16 бит?
- 4. Python и 16-бит PGM
- 5. добавляющие 16 бит регистров
- 6. 16 бит MUL сборка
- 7. Как проверить, является ли изображение 8 бит или 16 бит?
- 8. Boost CRC 16 бит
- 9. 16-бит float MPI_Reduce?
- 10. Ключ 128 бит, возвращаемый массив 16 бит
- 11. Виртуализация 16-битного процессора, 16 бит ОС
- 12. Linear PCM 16 бит до 8 бит
- 13. RasterLayer 16-бит в RasterLayer 8-бит
- 14. преобразователь волны 24 бит 16 бит
- 15. 8 бит звуковых образцов до 16 бит
- 16. Преобразование 16 бит pcm в 8 бит
- 17. I2c, которые поддерживают адрес 16 бит
- 18. Java: Как заменить последние 16 бит длинного на короткий
- 19. Как представить диапазон портов TCP в Java (16 бит)
- 20. Shuffle 16 бит векторов SSE
- 21. Самый высокий 16-бит EAX
- 22. 16 бит с плавающей запятой
- 23. плавать [] 16 бит в байты []
- 24. OpenCV с RGB 16 бит
- 25. Сохранение даты в 16 бит
- 26. Вращающийся хэш для 16 бит
- 27. Обработка звука 16 бит аудио
- 28. Как отличить 16 бит MZ и 32 бит MZ
- 29. как установить бит-бит для 16-МГц осциллятора
- 30. Как преобразовать звук 8 бит в 16 бит
Почему мы не используем 'int' type' math_fraktur_cap_g' читать суррогатные пары без BMP? как упомянуто [здесь] (https://stackoverflow.com/a/13112474/3317808) – overexchange