Pregunta

El estándar Unicode tiene suficientes puntos de código en los mismos que usted necesita 4 bytes para almacenar todos ellos. Eso es lo que hace la codificación UTF-32. Sin embargo, la codificación UTF-8 aprieta alguna manera éstos en espacios mucho más pequeños mediante el uso de algo que se llama "de ancho variable de codificación".

De hecho, se las arregla para representar los primeros 127 caracteres de US-ASCII en un solo byte, que es exactamente igual a ASCII real, para que pueda interpretar gran cantidad de texto ASCII, como si se tratara de UTF-8 sin hacer nada para ella. truco. Entonces, ¿cómo funciona?

Voy a preguntar y responder a mi propia pregunta aquí porque acabo de hacer un poco de lectura para averiguarlo y pensé que podría salvar a otra persona algún tiempo. Además tal vez alguien me puede corregir si Tengo un poco de mal.

¿Fue útil?

Solución

Cada byte comienza con algunas cosas que le indican si se trata de un solo byte de código de punto, un punto de código de varios bytes, o una continuación de un punto de código de varios bytes. De esta manera:

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

Las múltiples bytes de códigos puntos cada uno comienzan con algunas cosas que básicamente decir "eh, es necesario leer también el siguiente byte (o dos, o tres) para averiguar lo que soy." Ellos son:

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

Finalmente, los bytes que siguen los códigos de inicio de todo este aspecto:

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

Ya que se puede decir qué tipo de bytes que estás mirando desde los primeros pocos bits, a continuación, incluso si algo se ha mezclado en alguna parte, no se pierde toda la secuencia.

Otros consejos

RFC3629 - UTF-8, un formato de transformación de la norma ISO 10646 es la autoridad final aquí y tiene todas las explicaciones.

En resumen, varios bits en cada byte de la secuencia de 1-a-4-byte UTF-8-codificada que representa un solo carácter se utilizan para indicar si se trata de un byte final, un byte inicial, y si es así, cuántos bytes siguen. Los bits restantes contienen la carga útil.

  

UTF-8 era otro sistema para almacenar   la cadena de puntos de código Unicode,   esos números mágicos u +, en la memoria   utilizando 8 bytes bits. En UTF-8, cada   punto de código 0-127 se almacena en una   de un solo byte. Sólo los puntos 128 y códigos   anteriormente se almacenan usando 2, 3, de hecho,   hasta 6 bytes.

El Absoluto mínimo Cada desarrollador de software absolutamente, positivamente debe saber sobre Unicode y juegos de caracteres ( Sin excusas!)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top