Entender los juegos de caracteres y “collation” [parte 1/2]
Hace ya unos días iniciamos la serie de artículos de “Conceptos de informática” y comenzamos hablando del endian hoy seguimos con esta serie de post y hablaremos de los juegos de caracteres, los llamados charset y los collation que podríamos traducirlo como orden lexicográfico.
Juegos de caracteres
Cuando queremos almacenar información textual sobre una máquina que gestiona y almacena sólo información binaria, tenemos que decidir algún método para formalizar nuestra representación textual en forma de dígito que esta pueda almacenar.
Este método formal será la codificación de cada carácter en un conjunto de valores que puedan ser 0 ó 1. Estos valores serán entendidos por el software como un carácter. En función de que formalismo utilicemos, tendremos un juego de caracteres u otro.
El juego de caracteres más utilizado en el mundo de las computadores hasta hace no mucho es el famoso ASCII (American Standard Code for Information Interchange). Cada carácter se representa por medio de 7 dígitos binarios (aquí podéis ver el listado completo). De esta forma se aprovechaban 7 dígitos para transmitir información y 1 de control de paridad para detectar errores en registros de 8 bits de ancho. Tendríamos un total de 2 elevado a 7 posibles símbolos, 128 en total.
Sin embargo, como podéis suponer el ASCII sólo contemplaba los caracteres anglosajones y por lo tanto los demás idiomas europeos teníamos problemas para escribir nuestros textos en máquinas. Así nacieron los llamados ASCII extendidos cuyo ejemplo más importante es un estándar que a día de hoy sigue plenamente vigente en multitud de sistemas (creo, no os puedo asegurar, que el elegido por defecto para ficheros de texto en sistemas Windows con idiomas occidentales): ISO-8859-1.
Este estándar ya era capaz de almacenar prácticamente todas las letras y símbolos necesarios en Europa Occidental, de hecho contiene 8 bits de datos por carácter, pudiendo almacenar por lo tanto un total de 256 caracteres diferentes. Sin embargo, seguían existiendo problemas de codificación para alfabetos de origen oriental, árabe o hebreo, entre otros.
Del estándar que los resuelve UTF-8 (el que usan prácticamente todas las distribuciones actuales) y de las collation o de cómo indicar explícitamente el orden lexicográfico hablaremos en una próxima entrada.