05 abril, 2008

UTF-8

Douglas Crockford:

"UTF-8 es una de las cosas más elegantes que he visto. Es una codificación de flujos de bytes para valores simples (como los caracteres Unicode) que pueden ser mayores que un byte. UTF-8 tiene algunas propiedades maravillosas:

  • ASCII es un subconjunto válido, por lo que todos los flujos codificados en ASCII son también flujos UTF-8.
  • El primer byte de un caracter multi-byte indica el número de bytes que lo componen.
  • Los bytes de continuación son fácilmente distinguibles de los primeros bytes.
  • Se preserva la ordenación.


Un primes byte puede contener entre 2 y 7 bits de datos. Cada byte de continuación lleva 6 bits de datos.

UTF-8 tiene una desventaja desafortunada, que algunos caracteres de 16-bits se codifican en 3 bytes (24 bits). Esta desventaja es más que compensada por sus otras ventajas, y por tener una sola y simple codificación que funciona en todos los lenguajes y contextos. Los beneficios van desde una mayor fiabilidad a una mayor seguridad. Esa es la razón por la que JSON usa UTF-8. UTF-8 es buen material. Gracias, Ken Thompson. [...]

Primer Byte Longitud Primeros Bits Bits Totales Rango
00-7f 1 7 7 7f
80-bf continuación 6 n/a
c0-df 2 5 11 7ff
e0-ef 3 4 16 ffff
f0-f7 4 3 21 1fffff
f8-fb 5 2 26 3ffffff
fc-ff 6 2 32 ffffffff

Publicar un comentario en la entrada

Últimos links en indiza.com