UTF-8 Размер кодировки - PullRequest
       1

UTF-8 Размер кодировки

12 голосов
/ 03 февраля 2011

какие символы Юникода помещаются в 1, 2, 4 байта? Может кто-нибудь указать мне, чтобы заполнить таблицу персонажей?

Ответы [ 3 ]

23 голосов
/ 03 февраля 2011

Символы кодируются в соответствии с их положением в диапазоне. Вы можете найти алгоритм на странице Википедии для UTF8 - вы можете реализовать его очень быстро Кодировка Википедии UTF8

  • U + 0000 до U + 007F (правильно) кодируются одним байтом
  • U + 0080 до U + 07FF кодируются 2 байтами
  • U + 0800 до U + FFFF кодируются 3 байтами
  • U + 010000 до U + 10FFFF кодируются 4 байтами
4 голосов
/ 03 февраля 2011

Статья в Википедии о UTF-8 содержит достаточно хорошее описание кодировки:

  • 1 байт = кодовые точки от 0x000000 до 0x00007F (включительно)
  • 2 байта = кодовые точки от 0x000080 до 0x0007FF
  • 3 байта = кодовые точки от 0x000800 до 0x00FFFF
  • 4 байта = кодовые точки от 0x010000 до 0x10FFFF

Диаграммы могут бытьзагружается непосредственно с unicode.org .Это набор из примерно 150 PDF-файлов, потому что одна диаграмма будет огромной (возможно, 30 МБ).

Также следует помнить, что Unicode (по сравнению с чем-то вроде ASCII) гораздо сложнее обрабатывать - есть такие вещи, кактекст справа налево, метки порядка байтов, кодовые точки, которые могут быть объединены («составлены») для создания одного символа и различные способы представления одной и той же строки (и процесс преобразования строк в каноническую форму, подходящую для сравнения), намного больше пробелов и т. д. Я бы порекомендовал загрузить всю спецификацию Unicode и прочитать большую ее часть, если вы планируете делать больше, чем «не так уж много».

1 голос
/ 03 февраля 2011

UTF-8 идет на компромисс от 1 до 6 байтов, хотя текущее количество кодовых точек покрывается всего 4 байтами. UTF-8 использует первый байт для определения длины (в байтах) символа - см. Различные ссылки на вики-страницу:

UTF-8 Википедия

Однобайтовый UTF-8 по сути является ASCII - UTF-8 был разработан для совместимости с ним, поэтому он более распространен, чем, например, UTF-16.


Редактировать: По-видимому, было решено, что кодовые точки UTF-8 не будут превышать 21 бит (4-байтовые последовательности) - но у него есть техническая возможность обрабатывать до 31 бита (6 байтов UTF-8).

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