Question

La norme unicode a suffisamment de code points dans ce que vous avez besoin de 4 octets pour les stocker. C'est ce que l'encodage UTF-32. Pourtant, l'encodage UTF-8 en quelque sorte ceux-ci en serre des espaces beaucoup plus petits en utilisant ce qu'on appelle « le codage de largeur variable ».

En fait, il parvient à représenter les 127 premiers caractères de US-ASCII dans un seul octet qui ressemble exactement ASCII réel, de sorte que vous pouvez interpréter beaucoup de texte ascii comme si elle était UTF-8 sans faire quoi que ce soit. Astuce. Alors, comment ça marche?

Je vais poser et répondre à ma propre question ici parce que je viens de faire un peu de lecture pour le comprendre et je pensais qu'il pourrait sauver quelqu'un d'autre un certain temps. De plus peut-être que quelqu'un peut me corriger si j'ai un peu de mal.

Était-ce utile?

La solution

Chaque octet commence par quelques bits qui vous indiquent que ce soit un seul octet code virgule, un point de code multi-octets, ou une continuation d'un point de code multi-octets. Comme ceci:

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

Les multi-octets de code-points chacun commence par quelques bits essentiellement dire « hey, vous devez lire aussi l'octet suivant (ou deux, ou trois) pour savoir ce que je suis. » Ils sont:

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

Enfin, les octets qui suivent les codes de départ regardent tous comme ceci:

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

Comme vous pouvez dire quel genre d'octets que vous regardez des premiers morceaux, alors même si quelque chose est mutilée quelque part, vous ne perdez pas la séquence.

Autres conseils

RFC3629 - UTF-8, un format de transformation ISO 10646 est l'autorité finale ici et a toutes les explications.

En bref, plusieurs bits dans chaque octet de la séquence de codage UTF-8-encoded 1 à 4 octets représentant un caractère unique sont utilisés pour indiquer que ce soit un octet de fin, un octet de tête, et dans l'affirmative, combien octets suivent. Les bits restants contiennent la charge utile.

  

UTF-8 est un autre système de stockage   votre chaîne de points de code Unicode,   ces numéros magiques U +, en mémoire   à l'aide de 8 octets de bits. En UTF-8, tous les   point de code 0-127 est stocké dans un   seul octet. Seuls les points de code 128 et   ci-dessus sont stockés en utilisant 2, 3, en fait,   jusqu'à 6 octets.

Extrait Le logiciel Chaque Absolute minimum Developer Absolument, Positively doit savoir sur Unicode et les jeux de caractères ( No excuses!)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top