Pergunta

O padrão unicode tem de código o suficiente-os pontos em que você precisa de 4 bytes para armazenar todos eles.Isso é o que o UTF-32 codificação.Ainda assim, a codificação UTF-8, de alguma forma, aperta estes em muito menor espaços usando algo chamado "de largura variável codificação".

Na verdade, ele consegue representar a primeira 127 caracteres US-ASCII em apenas um byte, que se parece exatamente como o real ASCII, de modo que você pode interpretar lotes de texto ascii, como se fosse UTF-8 sem fazer nada para ele.Truque.Então como é que funciona?

Eu vou perguntar e de responder a minha própria pergunta aqui porque eu só fiz um pouco de leitura para descobrir isso e eu pensei que poderia salvar alguém de algum tempo.Mais, talvez, alguém pode me corrigir se eu tenho de errado.

Foi útil?

Solução

Cada byte começa com alguns bits que informam se é um único ponto de código de byte, um ponto de código de vários bytes ou uma continuação de um ponto de código multi-bytes. Assim:

0xxx xxxx    A single-byte US-ASCII code (from the first 127 characters)

Os pontos de código de vários bytes começam com alguns bits que dizem essencialmente "ei, você também precisa ler o próximo byte (ou dois ou três) para descobrir o que sou". Eles são:

110x xxxx    One more byte follows
1110 xxxx    Two more bytes follow
1111 0xxx    Three more bytes follow

Finalmente, os bytes que seguem esses códigos de partida são todos assim:

10xx xxxx    A continuation of one of the multi-byte characters

Como você pode dizer que tipo de byte você está olhando desde os primeiros bits, mesmo que algo seja mutilado em algum lugar, você não perde toda a sequência.

Outras dicas

RFC3629 - UTF-8, um formato de transformação de ISO 10646 é a autoridade final aqui e tem todas as explicações.

Em suma, vários bits de cada byte da codificado em UTF-8 1--4-seqüência de byte representa um único caractere usado para indicar se se trata de um byte, um byte à esquerda, e em caso afirmativo, quantos bytes a seguir.Os bits restantes conter a carga.

O UTF-8 foi outro sistema para armazenar sua sequência de pontos de código Unicode, esses números Magic U+, na memória usando bytes de 8 bits. No UTF-8, todo ponto de código de 0-127 é armazenado em um único byte. Somente pontos de código 128 e acima são armazenados usando 2, 3, de fato, até 6 bytes.

Trecho de O mínimo absoluto todo desenvolvedor de software absolutamente, deve saber positivamente sobre o Unicode e os conjuntos de personagens (sem desculpas!)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top