Soluciones Avanzadas No. 36, 15 de Agosto 96

 

Poniendo la crema sobre la u


Daniel M. Germán y Alejandro López-Ortiz
dmg@csg.uwaterloo.ca alopez-o@daisy.uwaterloo.ca

El uso de marcas diacríticas siempre ha sido un problema para los usuarios de computadoras en nuestro país. En algunos casos, las computadoras simplemente no los aceptan (aquellas viejas computadoras con teclados arcaicos), en otros sólo parcialmente (MS-DOS y la falta de mayúsculas acentuadas). Aun en aquellos sistemas que aceptan todos los caracteres, los archivos no siempre son portables a otras computadoras; el resultado son caracteres ilegibles en lugares donde los acentos, tildes y diéresis debieran estar.

Dado el auge de las redes, el problema se agrava. El conjunto de caracteres que cada computadora utiliza varía enormemente. Desde los viejos EBCDIC, pasando por el ASCII básico de 126 caracteres hasta el nuevo sistema Unicode. En algunos casos, ni siquiera los caracteres simples son comunes, en otros son sólo los inherentes al español (y otras lenguas ajenas al inglés) las que sufren la falta de estandarización. Actualmente, lo que solíamos llamar ASCII de 126 caracteres es formalmente denominado ISO 646.

Hace algún tiempo ISO (International Standards Organization) se encargó de la tarea de estandarizar los conjuntos de caracteres de los diversos lenguajes fonéticos. En el caso de nuestro lenguaje, éste recae en el grupo de los lenguajes occidentales, en particular en la clase 1, definida en el estándar 8859 de ISO. ISO-8859 define 10 conjuntos de caracteres para 10 grupos de lenguajes diferentes:

8859-1 Europa Occidental, América Latina, el Caribe, Canadá y África
8859-2 Europa del Este
8859-3 Europa del Sureste y misceláneos (Esperanto)
8859-4 Escandinavos y Bálticos (casi cubiertos por el 8859-1)
8859-5 Cirílico
8859-6 Árabe
8859-7 Griego
8859-8 Hebreo
8859-9 8859-1 en que el Turco reemplaza al Islandés
8859-10 Lenguajes polares: Lappish, Esquimal

Como se puede observar, la lista no es exahustiva y no incluye lenguajes orientales; peor aún, la distinción entre los primeros tres conjuntos es relativamente artificial, dado que dichos alfabetos tienen mucho en común. Sin embargo, ISO 8859 se está convirtiendo en el estándar más utilizado en Europa Occidental y América, pues abarca la mayoría de sus idiomas. Ni Windows 3.11 ni Windows 95 utilizan formalmente ISO 8859-1 --también conocido como Latin-1-- pero son compatible con él.

Unicode, un superconjunto de caracteres en que cada carácter ocupara 2 bytes es visto como el siguiente paso, pero aún no es implementado en muchas plataformas. Unicode es un estándar más reciente que ISO 8859, Unicode también es conocido pues como ISO 10646. Desafortunadamente, el software mas popular de Internet parece estar atrasado una generación pues apenas ahora se comienza a incluir ISO 8859, aun cuando ISO 10646 ya está aprobado. Unicode cubre el 99% de los lenguajes hablados, usando caracteres de 2 bytes, y permite extender caracteres a 4 bytes para incluir, por ejemplo, los glifos del alfabeto maya o los ideogramas del alfabeto chino. Asimismo, Unicode para el lenguaje español (codificado en un byte en lugar de dos) es compatible con ISO 8859-1, por lo que su uso es transparente.

La falta de estandarización para la creación de un conjunto único de caracteres crea, en algunos casos, problemas para aquellos que utilizamos lenguajes diferentes al inglés: enviar correo electrónico, imprimir documentos, copiarlos con ftp, incapacidad de utilizar caracteres acentuados en nombres de archivos, documentos en Web, problemas incluso para teclear los caracteres.

El correo electrónico es probablemente el que más sufre de la falta de un estándar único. Los estándares originales para correo electrónico no tenían contemplados lenguajes diferentes al inglés. Las primeras implementaciones para correo electrónico ignoraban el octavo bit de cada byte. Así, la letra ñ (241) sería convertida a "q" (113) al eliminar su octavo bit. Desgraciadamente, aún existen muchas computadoras y programas que lo hacen. La solución ha sido crear un estándar que transmite mensajes que utilicen 8 bits (incluyendo archivos binarios) utilizando medios de transporte de sólo 7 bits. En otros casos, es necesario configurar la computadora para que utilice ISO 8859-1.

MIME (Multi-purpose Internet Mail Extensions) es un estándar encaminado a eliminar estos problemas. Define mecanismos para permitir la transferencia de mensajes en diferentes códigos de caracteres, multimedios (sonido e imágenes) y archivos binarios. MIME utiliza hasta tres campos en el encabezado para determinar el tipo de información que transporta. Por ejemplo, un mensaje en inglés incluirá lo siguiente:

MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

Que significa: mensaje en MIME versión 1.0, que utiliza el conjunto de caracteres US-ASCII (ISO 646) y que utiliza sólo 7 bits. En cambio, el siguiente mensaje:

Subject: Prueba
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable

En este caso el mensaje está escrito originalmente en 8859-1 y codificado en 7 bits, por lo que será necesario reconvertirlo. Un mensaje de este tipo tendrá las vocales minúsculas acentuadas, representadas de la siguiente forma:

=E1=E9=ED=F3=FA

Programas de correo electrónico como Eudora son capaces de enviar y recibir mensajes en 8859-1, realizando la conversión automáticamente.

MIME permite además enviar varios "objetos" en el mismo mensaje; por ejemplo, el siguiente contiene una línea de texto con acentos y una imagen:

Mime-Version: 1.0
Content-Type: multipart/mixed; boundary=mysteryboxofun

--mysteryboxofun
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 7bit

=E1=E9=ED=F3=FA


--mysteryboxofun
Content-Type: image/jpeg; name="alqui_icon.jpg"
Content-Description: /dmg@csg:~/public_html/images/arte/remedios/alqui_icon.jpg
Content-Transfer-Encoding: base64

/9j/4AAQSkZJRgABAQAAA...

Nótese que el encabezado dice "multipart", y que dentro del cuerpo del mensaje hay nuevamente campos que describen el contenido de cada parte, incluyendo una línea divisora entre partes, definida en el encabezado (mysteryboxfun). Un programa que soporte MIME será capaz de reconocer cada sección, decodificarla por separado y aun más, arrancar un programa para visualizar la imagen, pues sabe que se trata de un archivo JPG en este caso. Nótese también el uso de base64. Existen varias formas de codificar el contenido de un archivo binario, las dos más comunes son base64 (cada 6 bits del archivo original son codificados en un byte) y hexbin (nativo a la Mac). Un buen programa de correo electrónico será capaz de detectar ambos y decodificarlos correctamente.

En Web algo semejante pasa: el conjunto de caracteres de la computadora en que se desarrolla la página no necesariamente coincide con el de la página donde se despliega. OS/2 y Windows son incompatibles; tal vez haya notado los pequeños 1 y ! que aparecen cuando usted despliega una comilla de Mac en un navegador de IBM PC compatible, son ejemplos de este problema. La solución fue utilizar un sistema de codificación llamado "entidades", heredado de SGML. Bajo este sistema, una á se codifica á, una ñ como ñ, sin embargo, no hay modo de codificar ¡ y ¿. Obviamente un archivo codificado de esta manera es difícil de leer sin la ayuda de un navegador de Web. La última versión de Netscape soporta diferentes conjuntos de caracteres y se puede especificar el que utilizará por omisión. Si se especifica ISO 8859-1 todos los documentos creados, utilizándolo, serán desplegados correctamente sin importar la plataforma en que Netscape esté corriendo, o si utilizan entidades; la única condición es que estén es critos utilizando 8859-1.

Conforme el tiempo avanza e Internet se vuelve más y más internacional, el uso de lenguajes diferentes al inglés se hace más simple y transparente para el usuario. Sin embargo, hasta el día que todos utilicemos Unicode, problemas como lo que hemos descrito anteriormente seguirán existiendo. En el pasado, la altura uniforme de los tipos de impresión dificultaba el uso de mayúsculas acentuadas, y aún ahora mucha gente arguye que su uso es incorrecto e innecesario. Lo mismo pasa en Internet, donde muchos aceptan las limitaciones de sus computadoras y dejan de utilizar marcas diacríticas y en su lugar utilizan digrafías (buz'on, o buzo'n en lugar de buzón), los despliegan incorrectamente (buz=F3n, buzsn), o simplemente los evitan.

Cervantes seguramente se reiría si notara cómo hemos dejado que las máquinas nos fuercen a mal escribir.

Para mayor información, lea su FAQ sobre ISO 8859-1 disponible en ftp://ftp.vlsivie.tuwien.ac.at/pub/8bit/FAQ-ISO-8859-1, la página de Unicode http://unicode.org, y la FAQ de MIME, publicada mensualmente en comp.mail.mime de Usenet.