UTF-8 breve introdução
UTF-8 É uma espécie de Unicode Codificação de caracteres de comprimento variável para , Também conhecido como "código universal" .
UTF-8 utilização 1 alcance 6 Codificação de bytes UNICODE caractere .
UTF-8 Regras de codificação
Se houver apenas um byte, seu bit binário mais alto é: 0;
Se for multi bytes , O primeiro byte começa a partir do bit mais alto , Os valores binários consecutivos são: 1 O número de bytes determina o número de bytes que codifica , Os restantes bytes são representados por 10 iniciar .
Unicode/UCS-4 | bit número | UTF-8 | byte número | observações |
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 | Gama de definição básica :0~FFFF |
1 0000~ 1F FFFF | 17~21 | 1111 0XXX 10XX XXXX 10XX XXXX 10XX XXXX | 4 | Unicode6.1 Intervalo de definição :0~10 FFFF |
20 0000~ 3FF FFFF | 22~26 | 1111 10XX 10XX XXXX 10XX XXXX 10XX XXXX 10XX XXXX | 5 | explicar : Isto não é unicode Gama de codificação: , pertencer a UCS-4 código Normas precoces UTF-8 Alcançável 6 Sequência de bytes , Pode ser substituído para 31 Bit ( Os limites originais do conjunto de caracteres universal ). Por tudo isso ,2003 ano 11 mês UTF-8 capa RFC 3629 Re especificação , Apenas o original Unicode Superfície definida ,U+0000 alcance U+10FFFF. De acordo com as especificações , Esses valores de byte não aparecerão em legal UTF-8 Em sequência |
400 0000~ 7FFF FFFF | 27~31 | 1111 110X 10XX XXXX 10XX XXXX 10XX XXXX 10XX XXXX 10XX XXXX | 6 |
UTF-8 vantagem
UTF-8 A codificação pode ser lida e escrita rapidamente mascarando bits e deslocando operações . Comparação de strings strcmp() e wcscmp() Os resultados de retorno de são os mesmos , Portanto, a classificação torna-se mais fácil . byte FF e FE ficar UTF-8 Nunca aparece no código , Portanto, eles podem ser usados para indicar UTF-16 ou UTF-32 texto ( ver BOM) UTF-8 É independente da ordem de bytes . Sua ordem de bytes é a mesma em todos os sistemas , Então não precisa BOM.
UTF-8 deficiência
Não podes UNICODE A julgar pelo número de caracteres UTF-8 Bytes de texto , porque UTF-8 É um código de comprimento variável. Ele precisa usar 2 Bytes que codificam aqueles com extensão ASCII O conjunto de caracteres só precisa 1 Caracteres dos bytes ISO Latin-1 sim UNICODE Subconjunto de , Mas não UTF-8 Subconjunto de 8 Caractere de bits UTF-8 A codificação será email Filtragem de Gateway , porque internet A informação foi originalmente concebida para: 7 posição ASCII código . Como resultado UTF-7 código . UTF-8 Utilizar valores na sua representação 100xxxxx A probabilidade de exceder 50%, Implementações existentes, tais como ISO 2022, 4873, 6429, e 8859 sistema , Vai confundi-lo com C1 Código de controlo . Como resultado UTF-7.5 código .