Categorías: Tutoriales

Entender los juegos de caracteres y “collation” [parte 2/2]

Esta es la segunda y última parte de la entrada publicada el otro día. Trataremos primero el formato de codificación Unicode que almacena los símbolos con longitud variables, UTF-8; y terminaremos comentando el collation u orden lexicográfico que seguro que habéis visto si manejáis algún gestor de base de datos como MySQL.

UTF-8

La aparición de UTF-8 supuso un antes y un después en la tecnología derivada de los juegos de caracteres. Sus dos creadores fueron: Robert C. PikeKenneth L. Thompson (el mismo que creó Unix y fue padre de B el antecesor de C).

Ken Thompson es el de la izquierda

El rasgo más importante es que no existen problemas para representar cualquier tipo de carácter Unicode (cualquiera de cualquier lenguaje que se os pueda ocurrir vaya).

¿Cómo lo consigue? Utilizando una longitud variables de bytes en función de lo raro del carácter. De esta forma algunos caracteres llegan a ocupar 4 bytes, es decir 32 bits, por lo que imaginad la cantidad de caracteres que podemos llegar a tener representados.

Otras ventajas de su uso son las siguientes:

  • Es compatible con ASCII (de vital importancia dada la popularidad de éste)
  • Incluye símbolos que aseguran la sincronía, es decir, es posible conocer el inicio de cada símbolo sin tener que volver a mirar todo desde el comienzo de la comunicación.
  • Y finalmente, no hay problemas de  superposición. Los conjuntos de valores que puede tomar cada byte de un carácter con más de un byte, son disjuntos, por lo que no es posible confundirlos entre sí.

Es el juego de caracteres estándar de la mayor parte de las distribuciones y lo utilizáis a diario además cuando navegáis por Internet o en multitud de aplicaciones.

Collation

Cuando vi por primera vez este nombre al hacer un CREATE TABLE con MySQL, no sabía a que se refería pero vi que dependía tanto del juego de caracteres como del lenguaje en el que estábamos trabajando.

¿Para qué sirve definir la collation u ordenación lexicográfica? Dentro de un mismo juego de caracteres, tenemos que saber cuál es el orden de las letras de cara a hacer ordenaciones en función del lenguaje. Por lo tanto por ejemplo:

  • En inglés la letra ñ se considera extraña e iría después de la z con los demás símbolos raros.
  • Sin embargo en español todo el mundo sabe que la ñ va después de la n

Además dependiendo de éste podremos definir si es lo mismo o no caracteres como: A o a, en función de nuestras necesidades.

Si tenemos un juego de caracteres como UTF-8 que soporta representaciones en todo tipo de lenguajes, necesitaremos definir el collation para saber que las ordenaciones se efectúen correctamente (si sabemos previamente qué lenguaje vamos a usar en la representación de datos, en caso de usar más de uno podemos usar el collation general o implementar este mecanismo a otro nivel).

Ejemplo de diferencias entre distintos collation

F. Javier Carazo Gil

Cofundador de CODECTION, empresa especializada en WordPress, autor de un libro sobre WordPress (el primero en español) y multitud de artículos (en medios físicos y virtuales) sobre el tema. Participa en la comunidad WordPress de forma activa siendo parte del equipo organizador de la WordPress Meetup de Córdoba, dando charlas en diferentes WordCamp y siendo autor y coautor de multitud de plugins libres y premium para WordPress de gran éxito.

Ver comentarios

  • No suelo postear comentarios, pero en este caso, haré una excepción puesto que gracias a este post, he entendido muchas cosas que he estado usando sin saber del todo como funcionaban.
    Gracias

  • @Carlos: Esa es la intención de esta serie de posts llamados "Conceptos de informática". Si quieres, comenta qué otros temas os interesarían de este estilo para desarrollarlos.

  • Hacía tiempo que no me acordaba yo de esto y siempre viene bien un repaso.

    Gracias Carazo.

  • Hola, tengo un problema con un documento de openoffice. sin kerer le e cambiao el juego de caracteres y aora el documento me sale con simbolos y letras ke no corresponde con lo ke yo escribi.
    me podriais decir ke juego de caracteres debo de poner??
    gracias

Entradas recientes

DeepSeek

3 días hace

Contacto

2 semanas hace

Smart-tv mute

2 semanas hace

STEAM OS

3 semanas hace

2025

1 mes hace

El podcast de Linux Hispano – #072 – El hardware libre debe consolidarse como el software libre

https://www.youtube.com/embed/z-xGk9c_eOw Guionista y locutor: Manuel Ignacio López Quintero.Fecha de publicación: 31 de diciembre de 2024.

1 mes hace