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

какие символы Unicode подходят в 1, 2, 4 байта? Может ли кто-нибудь указать мне на полный график символов?

Ответы

Ответ 1

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

  • U + 0000 до U + 007F (правильно) закодированы одним байтом
  • U + 0080 to U + 07FF закодированы с помощью 2 байтов
  • U + 0800 - U + FFFF закодированы с 3 байтами
  • U + 010000 до U + 10FFFF закодированы с 4 байтами

Ответ 2

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

  • 1 байт = кодовые точки 0x000000 до 0x00007F
  • 2 байта = кодовые точки 0x000070 до 0x0007FF
  • 3 байта = кодовые точки 0x000800 до 0x00FFFF
  • 4 байта = коды с 0x010000 до 0x10FFFF

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

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

Ответ 3

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

UTF-8 Wikipedia

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


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