826 Shares 9276 views

UTF-8 – codificación de caracteres

Unicode es compatible con casi todos los conjuntos de caracteres existentes. La mejor codificación para un conjunto de caracteres Unicode es la codificación UTF-8. Proporciona compatibilidad con ASCII, resistencia a corrupción de datos, eficiencia y facilidad de procesamiento. Pero sobre todo en orden.

Formas de codificación

Las computadoras operan con números no sólo como objetos matemáticos abstractos, sino como combinaciones de unidades de almacenamiento y procesamiento de información de tamaño fijo-bytes y palabras de 32 bits. El estándar de codificación debe tener esto en cuenta al determinar la forma en que los caracteres están representados por números.

En los sistemas informáticos, los números enteros se almacenan en celdas de memoria de tamaño 8 bits (1 byte), 16 o 32 bits. Cada forma de codificación Unicode determina qué secuencia de células de memoria representa un número entero correspondiente a un carácter particular. El estándar proporciona tres formas diferentes de codificación de caracteres Unicode: bloques de 8, 16 y 32 bits. En consecuencia, se denominan UTF-8, UTF-16 y UTF-32. El nombre UTF significa formato de conversión Unicode. Cada una de las tres formas de codificación es un medio igual de representación de caracteres Unicode, tiene ventajas en varias aplicaciones.

Estas codificaciones se pueden utilizar para representar todos los caracteres del estándar Unicode. Por lo tanto, son totalmente compatibles para soluciones por diferentes razones utilizando diferentes formas de codificación. Cada codificación se puede convertir de manera única en cualquiera de los otros dos sin pérdida de datos.

Principio de no imposición

Cada uno de los formularios de codificación Unicode está diseñado teniendo en cuenta la inadmisibilidad de la superposición parcial. Por ejemplo, Windows-932 genera caracteres de uno o dos bytes de código. La longitud de la secuencia depende del primer byte, por lo que los valores de byte principal en la secuencia de dos bytes y un solo byte no se cruzan. Sin embargo, los valores del byte único y el byte de cierre de la secuencia pueden ser los mismos. Esto significa, por ejemplo, que al buscar el carácter D (código 44), puede encontrarlo erróneamente entrando en la segunda parte de la secuencia de dos bytes del carácter "D" (código 84 44). Para determinar qué secuencia es correcta, el programa debe tener en cuenta los bytes anteriores.

La situación se complica más si el maestro y el byte de cierre coinciden. Esto significa que para invertir la ambigüedad, se realizará una búsqueda inversa hasta el comienzo del texto o una secuencia inequívoca de código. Esto no sólo es ineficiente, sino que no está protegido contra posibles errores, ya que un byte malo es suficiente para que todo el texto sea ilegible.

El formato de conversión Unicode evita este problema porque los valores de la unidad de almacenamiento de información principal, posterior y única no coinciden. Debido a esto, todas las codificaciones Unicode son adecuadas para buscar y comparar, nunca dando un resultado erróneo debido a la coincidencia de diferentes partes del código de caracteres. El hecho de que estas formas de codificación cumplan con el principio de no asignación las distingue de otras codificaciones de Asia Oriental de varios bytes.

Otro aspecto de la no intersección de codificaciones Unicode es que cada carácter tiene límites claramente definidos. Esto elimina la necesidad de escanear un número indeterminado de caracteres anteriores. Esta característica de las codificaciones a veces se llama auto-sincronización. La distorsión de una unidad de código conducirá a la distorsión de un solo carácter, y los símbolos circundantes permanecerán intactos. En el formato de conversión de 8 bits, si el puntero se refiere a un byte que comienza con 10xxxxxx (en codificación binaria), se requieren de una a tres transiciones inversas para encontrar el comienzo del carácter.

Consistencia

El Consorcio Unicode admite totalmente los 3 formularios de codificación. Es importante no oponerse a UTF-8 y Unicode, porque todos los formatos de conversión son implementaciones igualmente legítimas de las formas de codificación de caracteres Unicode.

Orientación de byte

Para representar el símbolo UTF-32, necesita una unidad de 32 bits de código que coincida con el código Unicode. UTF-16 – de una a dos unidades de 16 bits. Y UTF-8 utiliza hasta 4 bytes.

La codificación de UTF-8 está diseñada para la compatibilidad con sistemas orientados a bytes basados en ASCII. La mayoría de las prácticas existentes de software y tecnología de la información han dependido durante mucho tiempo de la representación de símbolos en forma de una secuencia de bytes. Muchos protocolos dependen de la invariabilidad de la codificación ASCII y utiliza o evita los caracteres de control especiales. Una manera fácil de adaptar Unicode a tales situaciones es mediante la codificación de 8 bits para representar caracteres Unicode equivalente a cualquier carácter ASCII o carácter de control. Para ello, se pretende la codificación UTF-8.

Longitud variable

UTF-8 es una codificación de longitud variable que consiste en unidades de almacenamiento de información de 8 bits, cuyos bits de orden alto indican a qué parte de la secuencia corresponde cada byte. Un rango de valores está reservado para el primer elemento de la secuencia de código, el otro para los elementos subsiguientes. Esto asegura la codificación disjunta.

ASCII

La codificación UTF-8 admite totalmente los códigos ASCII (0x00-0x7F). Esto significa que los caracteres Unicode U + 0000-U + 007F se convierten en un solo byte 0x00-0x7F UTF-8 y por lo tanto se vuelven indistinguibles de ASCII. Además, para evitar la ambigüedad, los valores 0x00-0x7F no se utilizan más en ningún byte de la representación de caracteres Unicode. Para codificar símbolos no ideográficos que no sean ASCII, se utiliza una secuencia de dos bytes. Los símbolos del rango U + 0800-U + FFFF están representados por tres bytes, y los adicionales con códigos mayores que U + FFFF requieren cuatro bytes.

Ámbito de aplicación

La codificación de UTF-8 es usualmente preferida en el protocolo HTML y similar a la misma.

XML se convirtió en el primer estándar con soporte de codificación UTF-8 completo. Las organizaciones que participan en la normalización también lo recomiendan. El problema de soporte en direcciones URL que no sean caracteres ASCII se resolvió cuando el consorcio W3C y el grupo de ingeniería de IETF acordaron codificar todas las URL exclusivamente en UTF-8.

La compatibilidad con ASCII facilita la transición a un nuevo software. Con UTF-8, la mayoría de los editores de texto funcionan, incluyendo JEdit, Emacs, BBEdit, Eclipse y el Bloc de notas del sistema operativo Windows. Ninguna otra forma de codificación Unicode puede presumir de tal apoyo de las herramientas.

La ventaja de la codificación es que consiste en una secuencia de bytes. Con las cadenas UTF-8, es fácil trabajar en C y otros lenguajes de programación. Esta es la única forma de codificación que no requiere el marcado del orden de los bytes BOM o la declaración de codificación en XML.

Sincronización automática

En un entorno que utiliza procesamiento de caracteres de 8 bits, en comparación con otras codificaciones de varios bytes, UTF-8 tiene las siguientes ventajas:

  • El primer byte de la secuencia de código contiene información sobre su longitud. Esto aumenta la eficiencia de la búsqueda directa.
  • Se simplifica encontrar el comienzo del carácter, ya que el byte inicial está limitado a un rango fijo de valores.
  • No hay intersección de valores de bytes.

Comparación de ventajas

La codificación UTF-8 es compacta. Pero cuando se solicita la codificación de caracteres de Asia Oriental (chino, japonés, coreano, utilizando caracteres chinos) se utilizan secuencias de 3 bytes. También la codificación UTF-8 es inferior a otras formas de codificación por velocidad de procesamiento. Una ordenación de cadenas binarias produce el mismo resultado que una ordenación binaria Unicode.

Esquema de codificación de caracteres

El esquema de codificación de caracteres consiste en una forma de codificación de caracteres y un método de disposición de unidades de código de byte por pixel. Para determinar el esquema de codificación por el estándar Unicode, se proporciona el uso de la marca inicial de orden de bytes (BOM, marca de orden de bytes).

Al activar la lista de materiales en UTF-8, la función de la etiqueta se limita sólo indicando el uso de la forma de codificación. El problema de determinar el orden de bytes en UTF-8 no es, ya que su tamaño de unidad de codificación es un byte. El uso de la lista de materiales para esta forma de codificación no es obligatorio ni recomendado. La lista de materiales puede aparecer en textos convertidos a partir de otras codificaciones que usan la marca de orden de bytes o para la firma de codificación UTF-8. Es una secuencia de 3 bytes EF 16 BB 16 BF 16 .

Cómo configurar la codificación UTF-8

En HTML, la codificación UTF-8 se establece mediante el siguiente código:

Cabeza

˂meta http-equiv = "Contenido-Tipo" content = "text / html; charset = utf-8" ˃

En PHP, la codificación UTF-8 se especifica usando la función header () al principio del archivo después de establecer el valor del nivel de salida de error:

Php

Error_reporting (-1);

Encabezado ('Content-Type: text / html; charset = utf-8');

Para conectarse a bases de datos MySQL, la codificación de UTF-8 se establece de la siguiente manera:

Php

Mysql_set_charset ('utf8');

En archivos CSS, la codificación de caracteres UTF-8 se especifica de la siguiente manera:

@charset "utf-8";

Al guardar archivos de todos los tipos, se selecciona la codificación UTF-8 sin BOM, de lo contrario el sitio no funcionará. Para ello, en el programa DreamWeave, seleccione el elemento de menú "Modificaciones – Propiedades de página – Título / Codificación", cambie la codificación a UTF-8. A continuación, debe volver a cargar la página, desmarque la casilla "Conectar firmas Unicode (BOM)" y aplique los cambios. Si algún texto de la página o de la base de datos ha sido introducido por otra forma de codificación, debe volver a introducirse o volver a codificarse. Cuando se trabaja con expresiones regulares, es obligatorio utilizar el modificador u.

También puede guardar el archivo en la codificación UTF-8 en el Bloc de notas de Windows. Después de seleccionar el elemento de menú "Archivo – Guardar como …", establezca el formulario de codificación necesario y guarde el archivo en codificación UTF-8.

En el editor de texto de Notepad ++, si la codificación es diferente de UTF-8, cambie la codificación y guárdela en codificación UTF-8 a través del elemento de menú "Convertir a UTF-8 sin BOM".

No hay alternativa

En el contexto de la globalización, cuando los límites políticos y lingüísticos están borrosos, los conjuntos de caracteres que tienen características locales se vuelven menos útiles. Unicode es el único conjunto de caracteres que admite todas las localizaciones. Y UTF-8 es un ejemplo de la correcta implementación de Unicode, que:

  • Soporta una amplia gama de herramientas, incluida la compatibilidad con la codificación ASCII;
  • Tiene una resistencia a la corrupción de datos;
  • Fácil y eficaz en el procesamiento;
  • No depende de la plataforma.

Con el advenimiento de UTF-8, las discusiones sobre qué forma de codificación o conjunto de caracteres es mejor se han vuelto sin sentido.