UTF-8 Введение
UTF-8 быть мишенью Unicode Кодировка символов переменной длины , универсальный код .
UTF-8 использовать 1 доходить 6 Кодировка в байтах UNICODE знак .
UTF-8 Правило кодирования
если существует только один байт, его максимальный двоичный разряд 0;
если многобайт , его первый байт начинается с самого высокого , непрерывный двоичный разряд 1 количество байтов определяет кодированность , Остальные байты 10 Начало .
Unicode/UCS-4 | bit число | UTF-8 | byte число | Примечание |
0000~ 007F | 0~7 | 0XXX XXXX | 1 | |
0080~ 07FF | 8~11 | 110X XXXX 10XX XXXX | 2 | |
0800~ FFFF | 12~16 | 1110XXXX 10XX XXXX 10XX XXXX | 3 | Основная область определения :0~FFFF |
1 0000~ 1F FFFF | 17~21 | 1111 0XXX 10XX XXXX 10XX XXXX 10XX XXXX | 4 | Unicode6.1 сфера определения :0~10 FFFF |
20 0000~ 3FF FFFF | 22~26 | 1111 10XX 10XX XXXX 10XX XXXX 10XX XXXX 10XX XXXX | 5 | Примечание : Это не так unicode область кодирования , принадлежать UCS-4 Кодировка ранний режим UTF-8 доступен 6 последовательность байтов , можно Перезаписать 31 бит ( начальный предел набора символов ). Тем не менее ,2003 год 11 месяц UTF-8 б RFC 3629 переоформировывать , использовать только оригинал Unicode область определения ,U+0000 доходить U+10FFFF. по нормам , Эти значения байтов не будут показаны в законном порядке UTF-8 последовательность |
400 0000~ 7FFF FFFF | 27~31 | 1111 110X 10XX XXXX 10XX XXXX 10XX XXXX 10XX XXXX 10XX XXXX | 6 |
UTF-8 Преимущества
UTF-8 Кодировка может быть написана в режиме быстрого считывания и сдвига . время сравнения строк strcmp() и wcscmp() Результаты одинаковы , сделать сортировку проще . байт FF и FE в UTF-8 Кодировка никогда не появится , Поэтому они могут быть использованы для показа UTF-16 или UTF-32 текст ( См. BOM) UTF-8 не зависящий от последовательности байтов . Это последовательность байтов во всех системах , Поэтому на самом деле она не нужна BOM.
UTF-8 недостатки
Ты не можешь UNICODE определение числа знаков UTF-8 количество байтов текста , потому UTF-8 Это кодирование, которое нужно использовать 2 Кодировка в байтах ASCII набор символов 1 символ в байтах ISO Latin-1 Да UNICODE подмножество , но не UTF-8 подмножество 8 Битовый символ UTF-8 кодированное покрытие email фильтрация шлюза , потому internet первоначальное проектирование информации 7 разряд ASCII код . из - за чего UTF-7 Кодировка . UTF-8 Использовать значение в его представлении 100xxxxx опережение вероятности 50%, а существующий ISO 2022, 4873, 6429, и 8859 система , Это неправильно. C1 контрольный код . из - за чего UTF-7.5 Кодировка .