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).