ASCII, páginas de código, UTF…: la Babel digital (I)

Cuenta una leyenda que, hace mucho, mucho tiempo, una multitud de hombres se propuso construir en la llanura de Sinar una torre con la que podrían alcanzar el cielo. Gracias a que por aquel entonces todos los pueblos de la tierra hablaban la misma lengua, las obras avanzaban a buen ritmo. Pero entonces, la divinidad que todo lo ve, al advertir los progresos decidió que esas no eran maneras de conseguir la gloria, así que echando mano de sus superpoderes infundió lenguas distintas entre las cuadrillas de operarios para que no pudieran entenderse entre sí. Lo consiguió, por supuesto, y los hombres, derrotados, suspendieron las obras y se diseminaron por el mundo. A la torre se la llamó Babel, que en hebreo significa ‘confusión’:

Por esto fue llamado el nombre de ella Babel, porque allí confundió Jehová el lenguaje de los hombres, y desde allí los esparció sobre toda la faz de la tierra. (Génesis 11, 9)

Y en esas estamos hoy. ¿O no?…

Byte order mark Concept

© aihumnoi – Fotolia.com

¿Le ha sucedido alguna vez que al abrir el informe de un colega la pantalla se le ha llenado de símbolos extraños? ¿Que en algún mensaje de correo venía salpicado de rombos como �ste? ¿Qué la página web oriental aparece repleta de signos familiares pero como combinados por alguna mente demente?
Bueno, si lograba dominar el pánico, posiblemente advertiría una “lógica en el caos”: sí, ¡los signos raros parecían estar ocupando, usurpando, posiciones que correspondían a otros!; sí, a mayúsculas acentuadas, a las dos eñes…
Bingo. Estaba sobre la pista correcta. Y como probablemente a usted le gusta conocer por qué pasan las cosas, como a nosotros, nosotros en Bioedición hemos tirado de ese hilo y este es el ovillo…

Limitaciones iniciales: el código ASCII

Las computadoras son de ciencias. Por simplificar, digamos que cuando el usuario pulsa una tecla, la máquina busca en su tabla de conversión su código numérico correspondiente, que es el que en realidad maneja internamente cuando tiene que procesar la pulsación, bien sea para combinarla con otras o, si se trata de un carácter imprimible, para mostrarla en pantalla o enviarla a la impresora.

Tabla ASCII original.

Tabla ASCII original. (©Computer Desktop Encyclopedia 1988)

En los primeros tiempos de la microinformática, allá por 1985, las posibilidades de combinación de esa tabla, la tabla ASCII (American Standard Code for Information Interchange) estándar, estaban limitadas a 128.

¿Por qué esa cifra y no otra? En aquella época, en Estados Unidos se consideraba que siete bits serían suficientes (!), así que el octavo bit que completaría el byte u octeto, o bien se ponía a cero por la izquierda, o bien se reservaba para detección de errores en las máquinas que lo precisaran. Como cada bit solo puede tomar uno de dos únicos valores, 1 o 0 (o, mejor dicho, “activado” o “no activado”), tenemos 27 = 128 combinaciones posibles. Por poner un ejemplo, a la letra A mayúscula le correspondía la posición decimal 65, que en sistema binario de siete bits se codifica como [0]1000001.

Las primeras posiciones y la última se asignaron a respuestas del sistema, como el pitido del altavoz interno (007), y a teclas de acción como Enter (013), Esc (027) o Supr (127). La pulsación de la barra espaciadora (032), utilizada para separar palabras, se considera el primer carácter “imprimible” y, como cada letra necesita dos posiciones (mayúscula y minúscula), el número de grafemas representables se reducía considerablemente.

Como vemos, no quedaba espacio para caracteres propios de otras lenguas distintas del inglés. En el caso del español faltaban el par ñ/Ñ, las vocales acentuadas y los signos de apertura de interrogación (?) y exclamación (¡). No pocas veces, entidades oficiales españolas lucían en la cabecera de sus listados una enigmática barra invertida en lugar de la exiliada eñe, como en AGENCIA ESPA\OLA DEL ISBN. Y tampoco estaban los caracteres griegos, tan necesarios en disciplinas científicas como la física, las matemáticas elementales (· × ÷ ≠ ≥ ≈ π), la estadística o la medicina.

Un bit más: ASCII extendido y páginas de código

Pero a principios de los años noventa la capacidad de proceso del hardware avanzaba a un ritmo vertiginoso, tal como enunciaba la ley de Moore, y tanto los fabricantes de equipamiento original, de consolas o de dispositivos de comunicaciones como los desarrolladores de software, que no podían esperar más, echaron mano de ese octavo bit para cubrir las necesidades específicas de sus clientes europeos  (los españoles necesitábamos la ñ, los alemanes la ß, los nórdicos la å, los húngaros la ő…). El problema es que lo hicieron sin ponerse previamente de acuerdo entre sí, por lo que surgieron infinidad de «dialectos» del ASCII original.

Representación gráfica de la comunicación entre la CPU y la memoria.

Representación gráfica de la comunicación entre la CPU y la memoria. El envío y recepción de la información se efectúa en “lotes” (bytes) de ocho bits a través de un puerto de ocho pines, o contactos. Los unos y los ceros simbolizan circuito abierto o circuito cerrado.

El mismo IBM, el gigante informático que en 1981 había presentado el Personal Computer (PC), junto con Microsoft, el entonces pequeño proveedor de sistemas operativos que suministraba el MS-DOS, llamó a esos dialectos páginas de códigos, y añadió a la de Estados Unidos (la 437) otras para los distintos idiomas indoeuropeos (737 y 869 para el griego, 857 para el turco, 860 para el portugués, 863 para el francés, etc.) y una genérica para Europa occidental (la 850); esta última sustituía algunos símbolos gráficos de la primera por vocales acentuadas, pero a su vez «perdía» algunas letras griegas importantes y algunos signos como «mayor o igual que» y «menor o igual que».

Sin embargo, en los noventa Microsoft se independizó de IBM e introdujo ligeras variaciones en la páginas de códigos europeas. Además, creó para el incipiente entorno operativo Windows otra serie nueva que incluía entre otras la Windows-1252. Pero poco después la propia Microsoft desaconsejó el uso de páginas de códigos, si bien las nuevas aplicaciones debían saber interpretarlas para manejar archivos digitales antiguos.

Resumiendo: la tarea era (y es) compleja por diversas razones:

  • Los programas necesitaban saber de qué página echar mano para poder mostrar correctamente el contenido de los archivos; si no acertaban, lo que aparecía en pantalla era un galimatías conocido como mojibake.
  • La página usada en una máquina podía ser distinta de la empleada en otra, con el resultado de que esta es incapaz de descifrar los caracteres del documento.
  • A menudo, los datos no se etiquetaban debidamente en origen, lo que dificultaba enormemente su lectura correcta en otro equipo.
  • Las páginas de Microsoft difieren en diverso grado de algunos estándares y de las distintas implementaciones de otros suministradores.
  • El sistema de páginas de código limitaba el conjunto de caracteres disponibles.
  • Los caracteres expresados en una codificación no conocida por la computadora de destino podían ser convertidos por esta en signos de interrogación, en otros símbolos o en una versión simplificada de aquellos (por ejemplo, letras que pierden la tilde); otras veces, directamente se ignoraban.
Artículo "Mojibake" de la Wikipedia japonesa incorrectamente visualizado.

Un caso extremo: una versión de navegador, presumiblemente obsoleta o indebidamente configurada, está descodificando como Windows-1252 una página web desarrollada en UTF-8 (Unicode): se trata, precisamente, del artículo «Mojibake» (‘escritura deforme’) de la Wikipedia japonesa.

El resultado, como muchos recordaremos, fue la Babel digital. El mismo sistema operativo, la misma aplicación y el mismo formato de archivo del documento original no siempre eran garantía de resultados predecibles al ser procesado este en otra máquina; de hecho, con demasiada frecuencia, en las editoriales abríamos el disquete de 3,5 pulgadas que acabábamos de recibir (por correo postal, claro) del autor y la pantalla se nos poblaba de un batiburrillo indescifrable de caracteres reconocibles junto a signos imposibles. Entonces, no nos quedaba otra que recurrir al filtrado de esos archivos a través de aplicaciones intermedias o echar mano de nuestro forzosamente nutrido arsenal de utilidades de conversión. Y claro, cómo no, el proceso distaba de ser perfecto.

El alfabeto de un millón de letras: Unicode

Así pues, los ocho bits venían a solucionar las necesidades de muchos idiomas, pero no bastaban ni de lejos para que pudieran comunicarse entre sí de manera eficiente.

Logotipo del proyecto Unicode, del Unicode ConsortiumTodo cambió con la llegada de Unicode. Unicode, más que una tabla más, es un conjunto de directrices técnicas, aprobadas por un consorcio independiente y dirigidas a desarrolladores de software, para garantizar el procesamiento, almacenamiento e intercambio uniforme de la información.

Pero también es, de cara al usuario una tabla: la tabla. Como, a día de hoy (año 2013 de nuestra era), las capacidades del hardware y la nanotecnología permiten afrontar sin problemas las exigencias del software de consumo, el consorcio ha podido diseñar una base de datos virtualmente ilimitada. La Unicode Character Database (UCD), que así se llama, está organizada en grandes grupos llamadas planos, que a su vez se dividen en áreas y, estas, en bloques. Ahora bien, estos bloques ya no albergan directamente equivalencias numéricas de dibujos de letras (o «glifos»), sino códigos correspondientes a grafemas y pseudografemas que luego cada aplicación de escritorio (PowerPoint, Word, Corel, iTunes, etc.) o de procesamiento en línea (Gmail, Wikipedia, Youtube… o PubMed) se encarga de “dibujar” a su manera.

Si bien, por razones de compatibilidad, se recogen algunas páginas de código de la era ASCII como el primitivo ASCII7, ISO 8859-1 o Windows-1252, con Unicode ya no es necesario que la codificación del texto coincida con la de la fuente empleada ni que haya que alternar entre múltiples tablas, con lo que se evitan daños (corruption) en los datos. El sistema es capaz de almacenar e integrar en un solo conjunto sistemas de escritura modernos como árabe, braille, copto, cirílico, griego, han (kanji, hanja y hanzi), japonés (kanji, hiragana y katakana), hebreo y latino; escrituras históricas extintas que se han recuperado con propósitos académicos: cuneiforme, griego antiguo, lineal B micénico, fenicio y rúnico; símbolos científicos, y una gran variedad de signos tipográficos, de solfeo, divisas, flechas, pictogramas, ideogramas, señalética diversa y un largo etcétera.

Un efecto secundario más obvio es el que podemos sufrir a la hora de recuperar esa información para un propósito puntual, es decir, a la hora de encontrar ese símbolo peculiar que estamos buscando para insertarlo en nuestro escrito, sobre todo —claro está— si es muy peculiar. Para ayudarnos en la tarea, el propio consorcio ha dividido el repertorio disponible en una serie bastante exhaustiva de subtablas, o «mapas» (charts) agrupados a su vez en dos grandes bloques: lenguajes o sistemas de escritura (scripts) por un lado y símbolos por otro. El listado y los PDF pueden consultarse o descargarse en la sección Unicode 6.2 Character Code Charts. dentro de www.unicode.org.

Gráfico que recrea en perspectiva un listado parcial de 'scripts' y símbolos recogidos por Unicode.

Gráfico en perspectiva que recrea un listado parcial de ‘scripts’ y símbolos recogidos por Unicode.

¿Y después…?

El límite teórico de espacio para códigos alcanza las 2.097.152 (221) combinaciones posibles, si bien en la práctica se restringen a 1.114.112 (220 + 216), de las que hasta ahora (versión 6.1) “solo” se han utilizado 110.181. Para almacenar, direccionar en memoria y recuperar los códigos, los programadores pueden utilizar diversos formatos —¡no incompatibles esta vez!—, llamados Unicode Transformation Format: UTF-8, UTF-16 o UTF-32.

¿Se quedará pequeño alguna vez este sistema? Creemos que no, que esta vez no; que Unicode ha venido para quedarse. Adoptado por los principales fabricantes de hardware de comunicaciones, por los diseñadores de entornos (frameworks) de programación, por los gigantes tecnológicos como Google, Microsoft, Apple, Adobe, IBM y, por supuesto, por la Free Software Foundation, este protocolo de codificación tiene todas las papeletas para constituirse en el estándar universal —si no lo es ya— para el procesamiento computarizado de texto. Y lo bueno es que por razones conceptuales ya no crecerá más: no se le asignarán más bits, es decir, no habrá más posibilidades de combinación (se hace difícil llegar a imaginar que se llegara a plantear tal necesidad); por tanto, a medida que, como es de esperar, se vaya renovando el parque de ordenadores, cada vez más nodos de la red se irán sumando al estándar y la compatibilidad será mayor. El tiempo, en este caso, corre a nuestro favor.

Así pues, y volviendo a la cita bíblica del principio, ¿estará el hombre dando sus primeros pasos hacia un lenguaje universal? ¿Estará iniciando el regreso a Babel?

One thought on “ASCII, páginas de código, UTF…: la Babel digital (I)

  1. Pingback: Representación gráfica del prefijo micro- | BioEdición

Comments are closed.