unicode utf-8 utf-16 codepages

unicode - utf-8 table



La guía del muñeco para Unicode (6)

¿Podría alguien darme una definición concisa de

  • Unicode
  • UTF7
  • UTF8
  • UTF16
  • UTF32
  • Codepages
  • Cómo difieren de Ascii / Ansi / Windows 1252

No busco enlaces de wikipedia o detalles increíbles, solo una breve información sobre cómo y por qué han surgido las enormes variaciones en Unicode y por qué debería importarle como programador.


Además de Joel one, a menudo referenciado, tengo mi propio artículo que lo mira desde un punto de vista centrado en .NET, solo por variedad ...




Otros ya han señalado buenas referencias para empezar. No estoy enumerando una verdadera guía de Dummy, sino más bien algunos consejos de la página del Consorcio Unicode. Encontrará algunas razones más esenciales para el uso de diferentes codificaciones en las páginas del Consorcio Unicode.

Las preguntas frecuentes de Unicode son un lugar lo suficientemente bueno para responder algunas (no todas) tus consultas.

Una respuesta más sucinta sobre por qué existe Unicode, está presente en la sección del recién llegado del sitio web de Unicode :

Unicode proporciona un número único para cada personaje, sin importar la plataforma, sin importar el programa, sin importar el idioma.

En lo que respecta a las razones técnicas para el uso de UTF-8, UTF-16 o UTF-32, la respuesta se encuentra en la Introducción técnica a Unicode :

UTF-8 es popular para HTML y protocolos similares. UTF-8 es una forma de transformar todos los caracteres Unicode en una codificación de longitud variable de bytes. Tiene la ventaja de que los caracteres Unicode que corresponden al conjunto ASCII familiar tienen los mismos valores de bytes que ASCII, y que los caracteres Unicode transformados en UTF-8 se pueden usar con gran parte del software existente sin necesidad de reescribir extensamente el software.

UTF-16 es popular en muchos entornos que necesitan equilibrar el acceso eficiente a los caracteres con un uso económico del almacenamiento. Es razonablemente compacto y todos los caracteres muy utilizados se ajustan a una sola unidad de código de 16 bits, mientras que todos los demás caracteres son accesibles a través de pares de unidades de código de 16 bits.

UTF-32 es popular donde no hay que preocuparse por el espacio de la memoria, pero se desea acceso de ancho fijo, unidad de código único a los caracteres. Cada carácter Unicode está codificado en una sola unidad de código de 32 bits cuando se usa UTF-32.

Las tres formas de codificación necesitan como mucho 4 bytes (o 32 bits) de datos para cada carácter.

Una regla general es usar UTF-8 cuando los idiomas predominantes que admite su aplicación se hablan al oeste del río Indo, UTF-16 para el opuesto (al este del Indo) y UTF-32 cuando le preocupa la utilización de caracteres con almacenamiento uniforme.

Por cierto, UTF-7 no es un estándar Unicode y fue diseñado principalmente para su uso en aplicaciones de correo.


Sí, tengo una idea, pero podría estar mal, sin embargo, me ayudó a entenderlo.

Tomemos un poco de texto. Se almacena en las computadoras RAM como una serie de bytes, la página de códigos es simplemente la tabla de asignación entre los bytes y los caracteres que usted y yo leemos. Así que algo como el bloc de notas viene con su página de códigos y traduce los bytes a su pantalla y ve un montón de basura, signos de interrogación invertidos, etc. Esto no significa que sus datos estén distorsionados solo porque la aplicación que lee los bytes no está usando el correcto página de código. Algunas aplicaciones son más inteligentes para detectar la página de códigos correcta que otras y algunas secuencias de bytes en la memoria contienen una lista de materiales que representa una marca de orden de bytes y esto puede declarar el uso de la página de códigos correcta.

UTF7, 8 16 etc. son solo páginas de códigos diferentes que usan formatos diferentes.

El mismo archivo almacenado como bytes utilizando diferentes páginas de códigos tendrá un tamaño de archivo diferente porque los bytes se almacenan de forma diferente.

Tampoco difieren realmente de Windows 1252 ya que es solo otra página de códigos.

Para una mejor respuesta más inteligente, pruebe uno de los enlaces.


Si quieres una introducción realmente breve: Unicode en 5 minutos

O si buscas postrados:

  • Unicode: un mapeo de caracteres a enteros ("puntos de código") en el rango de 0 a 1,114,111; cubre casi todos los idiomas escritos en uso
  • UTF7: una codificación de puntos de código en un flujo de bytes con el claro de bits alto; en general no uses
  • UTF8: una codificación de puntos de código en una secuencia de bytes donde cada carácter puede tomar uno, dos, tres o cuatro bytes para representar; debe ser su elección principal de codificación
  • UTF16: una codificación de puntos de código en una secuencia de palabras (unidades de 16 bits) donde cada personaje puede tomar una o dos palabras (dos o cuatro bytes) para representar
  • UTF32: una codificación de puntos de código en una secuencia de unidades de 32 bits donde cada carácter toma exactamente una unidad (cuatro bytes); a veces se usa para la representación interna
  • Páginas de códigos: un sistema en DOS y Windows por el cual los caracteres se asignan a enteros y una codificación asociada; cada uno cubre solo un subconjunto de idiomas. Tenga en cuenta que estas asignaciones son generalmente diferentes a las asignaciones Unicode
  • ASCII: una asignación muy común de caracteres a enteros, y la codificación directa en bytes (todo claro de bits altos); la asignación es un subconjunto de Unicode y la codificación de un subconjunto de UTF-8
  • ANSI: un cuerpo de estándares
  • Windows 1252: una página de códigos comúnmente utilizada; es similar a ISO-8859-1, o Latin-1, pero no es lo mismo, y los dos a menudo se confunden

¿Por qué te importa? Porque sin conocer el conjunto de caracteres y la codificación en uso, no se sabe realmente qué caracteres representa una secuencia de bytes dada. Por ejemplo, el byte 0xDE podría codificar

  • Þ (LETRA DE CAJA LATINA LATINA)
  • fi (LIGA PEQUEÑA LATINA FI)
  • ή (GRIETA PEQUEÑA GRIEGA ETA CON TONOS)
  • u otros 13 caracteres, según la codificación y el conjunto de caracteres utilizados.