CODIFICACIÓN DE FICHEROS / FILE ENCODING

Alguien le ha enviado un archivo (.csv o .xlsx o cualquier extensión), lo ha abierto y ha descubierto un texto como “ESPA +? A” en lugar de “ESPAÑA”.

Si ya ha experimentado una situación de este tipo, la buena noticia es que ha sido causada por una falta de correspondencia de codificación. Suponiendo que en algún lugar de su organización (o de la organización que lo haya enviado) estos datos existen en el estándar de codificación adecuado y conocido, puede estar seguro de que sucedió algún error durante el "viaje" del archivo. Es posible que aconteciese cuando se se creó el archivo recibido (probablemente como una exportación de un tercer sistema), o en la última acción cuando lo abrió sin conocer su codificación subyacente.

Por cierto, estas transformaciones de texto -textos que se decodifican utilizando una codificación de caracteres no intencionada- tienen su propio nombre: “Mojibake” del idioma japonés.

La codificación de caracteres es un método para convertir un carácter de un lenguaje escrito (“a”, “á”…) en una representación del sistema como, por ejemplo, una secuencia de números o pulsos eléctricos -en el caso del código morse-. En informática, almacenamiento y transmisión de datos, la codificación de caracteres es el método para asignar un número a cada carácter que permite la representación digital.

Para principiantes: en el informática, la cantidad mínima de información física se denomina "bit" que representa un estado alternativo binario (sí / no, 1/0, abierto / cerrado). Los bits se agruparon originalmente en paquetes de 8, conocidos como “byte” que -hasta que despegue la computación cuántica- es la unidad lógica mínima de información correspondiente a un carácter (letra o símbolo). La razón por la que se eligió el número 8 es simplemente que, en el momento en que se definió, los microprocesadores podían manejar solo 8 bits simultáneamente; es decir, podrían asignar un significado lógico a 8 bits (o un byte) a la vez. El cálculo básico muestra que a través de un byte podemos representar 2 ^ 8 = 256 caracteres diferentes.

Los proveedores de software desarrollaron su propia correspondencia entre caracteres imprimibles y de control (como "e" o “salto de línea", respectivamente) y números (un valor binario en un solo byte). Estas correspondencias recibieron el nombre genérico de "páginas de códigos” (CODE PAGE = CP). La codificación actual de Windows se conoce como CP 65001, que revisaremos más adelante.

Los métodos de codificación digital de hoy son el resultado de su evolución histórica: al principio, existían diversos métodos entre los diferentes proveedores de software, que no usaban necesariamente los mismos conjuntos de caracteres y que actualmente han convergido en un marco común, UNICODE, que es un estándar internacional para mapear todos los caracteres utilizados en lenguajes naturales, emojis, música, matemáticas ... en valores legibles por máquina. Unicode utiliza un conjunto de caracteres codificados universal que asigna un número natural (de 1 a 1.114.111), llamado punto de código, a cada carácter (letras, dígitos, diacríticos, signos de puntuación, etc.). Por ejemplo, el carácter gráfico “á” se considera un punto de código (solo o en secuencia [a + ´]. Estos puntos de código abstracto son necesarios para distinguirlos de su representación gráfica particular, llamada glifo, relacionada con las diferentes fuentes disponibles para el mismo carácter "abstracto" (New Times Roman, Arial, ...), y de la secuencia particular de bits utilizados que depende del contexto (la página de códigos o CP). En otras palabras, la idea intuitiva de una correspondencia uno a uno entre los caracteres y las secuencias de bits no se cumplen, y la secuencia concreta de bits que se utiliza para representar digitalmente un carácter o símbolo determinado depende del contexto particular.

Dentro del estándar UNICODE, UTF significa Formato de Transformación Unicode: UTF-8 es un estándar de codificación que utiliza de una a cuatro unidades de código de un byte (8 bits) para codificar cada carácter. Fue diseñado para ser compatible con el ASCII (Código Estándar Americano para el Intercambio de Información) preexistente y, a día de hoy, es el estándar en la transmisión de datos a través de la web y sistemas de tipo Unix. La CP 65001 es la implementación de Windows de UTF-8. También existe UTF-16 que representa cada punto de código con una o dos unidades de código de 16 bits. UTF-32 también está bien definido y presenta algunas ventajas en términos de tiempo de procesamiento.

Como curiosidad, Windows-1252 o CP-1252 es una codificación de caracteres de un solo byte del alfabeto latino, utilizada por defecto en los componentes heredados de Microsoft Windows para inglés y muchos idiomas europeos, incluyendo español, portugués, francés y alemán.

Por lo tanto, siempre que obtenga / solicite que un archivo sea abierto por un software y / o sistema operativo diferente al original, tenga en cuenta este problema potencial.

A partir de la versión 21, IBM SPSS Statistics opera en mode Unicode por defecto, pero se puede alterar para controlar el CP concreto. Se hace a través del menú Editar>Opciones>Idioma

Consejo para los usuarios de Excel: al abrir un archivo de texto, vaya a la pestaña "Datos", haga clic en el icono "de texto / CSV", elija el archivo correcto para abrir y haga clic en "importar": el asistente le dará la opción de configurar el archivo codificación, el delimitador del campo y el método para la detección del tipo de datos.

Para terminar, el formato de archivo está estrechamente relacionado con la codificación de caracteres. Ya se ha dado cuenta de que el almacenamiento de datos requiere la definición de un estándar de codificación de caracteres que normalmente es proporcionado por la configuración de software predeterminada. Suponiendo que la codificación ya no es un problema, y restringiéndonos a archivos de datos (imagen, sonido, etc., están fuera de nuestro alcance actual), los formatos de archivo tienen que ver con la estructura de los datos almacenados: son campos organizados en columnas, son la columna nombres presentes en la primera fila, cuántas filas de encabezado debemos omitir para comenzar a obtener los datos de interés, cómo se separan los diferentes campos: punto y coma / coma / tabulación, hay alguna marca de texto como comillas (“). Los formatos de datos más populares son .csv (valores separados por comas), XML (eXtended Markup Language) y JSON, los dos últimos han crecido junto con la transferencia de datos en la World Wide Web y ambos utilizan UNICODE como convención de codificación. Las UTF-X específicas dependen de las características de los sistemas con los que interactúan.

Author's photo

Jesús Bescos

I have worked in the areas of Information, Decisioning Systems, Data Analysis, and Predictive Analytics for more than 20 years. I’ve a Master Degree in Public Economics, and a Ph.D. in Applied Economics.
Over the course of my professional activity I have had the privilege of Teaching and practicing Statistics, joining the Predictive Analytics software industry (SPSS, now part of IBM company), working for a Global Information Services player (Experian) and setting up my own practice.
My professional career has evolved around the connexion of data with effective actions, for various business environments demanding the combined use of analysis and technology in different roles and positions requiring the management of products, consultancy, and sales.