| "Desde que a principios de a=F1o cambi=E9 de
programa de correo electr=F3nico, algunos dicen recibir caracteres extra=F1os en mis
mensajes =BFQu=E9 est=E1 pasando?". Quien escribió
este mensaje usó caracteres tales como vocales acentuadas, eñes y signos de
interrogación que no están presentes en todos los ordenadores del mundo. Pero antes de
enviarlo, en la ventana del programa de correo, el texto podía leerse correctamente.
Además, lo envió a otra persona que habla el mismo idioma y que también puede escribir
eñes, vocales acentuadas y los mismos signos tipográficos que ella. ¿Dónde está el
problema?. Simplemente en que las tablas de caracteres de los sistemas informáticos,
fueron diseñadas sin tener en cuenta que algún día todos los ordenadores del planeta
podrían comunicarse entre sí.
En realidad, la base es buena y las cosas no tenían porque
complicarse demasiado. Un ordenador es capaz de guardar y transmitir sólo dos cosas:
ceros y unos. Cuando en sus circuitos y posiciones de memora hay corriente eléctrica,
interpretan un uno y en caso contrario, cuando no hay corriente, un cero. Son los
"binary digits", para abreviar, bits.
Los errores empezaron al determinar qué combinación de ceros y
unos hay tras cada carácter y símbolo utilizado para escribir textos. La primera tabla
aceptada como un estándar internacional se llama ASCII, el acrónimo de "American
Standard Code for Information Interchange", un sistema que clasifica los bits de
forma estándar, pero sólo para América... y del Norte.
La tabla ASCII
La tabla ASCII codifica la equivalencia en bits de todos los
números, letras y símbolos. También contempla una serie de caracteres de control que
sirven para representar algunos datos invisibles pero útiles en un sistema informático;
por ejemplo el salto de línea o página, los tabuladores o el pitido del altavoz. Según
la tabla ASCII, para representar un carácter son necesarios grupos de ocho bits
--conjunto conocido como byte u octeto--. Los motivos están bien fundados.
En primer lugar, los procesadores más pequeños utilizados en la
fabricación de equipos informáticos son de ocho bits. Los ordenadores están equipados
con un oscilador de cuarzo, que vibra para marcar el ritmo de funcionamiento del sistema;
son los Megahercios, o millones de vibraciones, por segundo en este caso. Cada vibración
sirve para que un procesador de ocho bits mueva esta cantidad de información a lo largo
de los circuitos y ancho de la memoria del ordenador.
En segundo lugar, haciendo todas las combinaciones posibles de ceros
y unos que hay en ocho bits (2 elevado a 8), el resultado es de 256 combinaciones o
caracteres diferentes; más que suficiente para representar todos los caracteres
necesarios.
Así, la tabla ASCII dice que una "A" binaria es
"01000001", y "Z" equivale a "01011010". Las personas que
contamos en base diez (porque, entre otras cosas, tenemos diez dedos --por lo menos a
mano--), recordamos mucho mejor que una "A" en la tabla ASCII es un 65 y una
"Z", un 90. Para pasar de base dos a base diez, recuerde que en base dos la
primera posición desde la derecha es 1, la siguiente 2, la tercera cuatro y así
sucesivamente hasta la última, que es 128.
Tabla
1
Ocho bits que eran siete
Hasta ahora hemos hablado de ocho bits y 256 combinaciones
distintas. Pero los diseñadores de la tabla ASCII pensaron que con las 127 combinaciones
posibles, usando siete bits, ya tenían todo lo necesario para representar el alfabeto
americano, que no tiene ni eñes ni vocales acentuadas. De hecho, sus teclados ya se
ampliaron al pasar de las máquinas de escribir a los terminales informáticos y no
necesitaban más caracteres, ¿para qué representarlos?.
En América usaban con éxito la tabla ASCII. Los europeos también,
sin éxito, pero guardando un respetuoso silencio. Por las leyes de la causalidad, durante
muchos años, los ordenadores que nos llegaban desde ultramar no tenían ni acentos ni
eñes. En una primera revisión, respetando resignadamente la cantidad de siete bits,
algunos fabricantes de impresoras y terminales se permitieron un pequeño parche en tabla
ASCII: La barra "\" apareció impresa como una Ñ, la almohadilla como el signo
"Pt", los corchetes fueron "¡" y "¿" respectivamente, y la
barra vertical una eñe minúscula.
Quizás porque los ordenadores eran vistos como genios carísimos,
capaces de procesar facturas, contabilidades y demás portentos a velocidad de vértigo,
los acentos y otros caracteres no parecían indispensables para el resultado final. Y a
los genios siempre se les permite alguna que otra excentricidad. Pero poco a poco los
ordenadores, en su versión personal, empezaron a estar en manos de personas ocupadas en
cosas que no tenían nada que ver con el montante de las columnas "Debe" y
"Haber" en una contabilidad. Y si no eran capaces de entender una vocal
acentuada, eran cualquier cosa excepto genios. Todo esto quedaría solucionado con las
normas ISO.
De ASCII a ISO 8859
Los gurús de la informática se reunieron de nuevo para incluir los
nuevos caracteres en la tabla ASCII. Para conseguirlo, usaron la mitad de la tabla en
blanco, correspondiente a los códigos 128 a 256. El problema es que se reunieron por
separado, así que una "á" no tenía el mismo código en un IBM que en un DEC o
un Apple. La cosa se estaba complicando y la ISO (International Standardization
Organization), esta vez sí, reunió a todos los fabricantes con el objetivo de crear una
tabla que sirviera para todo el mundo. La primera mitad de la tabla ASCII se dejó tal
cual. La segunda mitad era insuficiente para representar todos los caracteres del planeta.
La solución fue crear varias tablas y a nosotros, junto a una buena parte de las lenguas
occidentales, nos corresponde la tabla ISO 8859-1, también conocida como ISO Latin-1.
Así el octavo bit es indispensable en nuestra tabla ISO, pero
insignificante en las tablas ASCII presentes en el software que utilizan los ordenadores
medio planeta. Además, la mitad que ignora el octavo bit es el inventor y principal
desarrollador de casi todo en Internet. En consecuencia, algunos estándares tan
importantes como el SMTP (Simple Mail Transfer Protocol, software encargado de transmitir
el correo electrónico), reducen sistemáticamente el octavo bit a cero.
En casa del pobre las alegrías duran poco y ahora nuestra tabla ISO
peligra en Red. Todos los textos y archivos, especialmente si han de viajar en un mensaje
de correo electrónico, deben estar codificados usando siete bits. De lo contrario,
cualquier servidor SMTP cambiará su contenido sin pensárselo dos veces.
El bit que viajó a nunca jamás
Antes de la popularización de Internet, las personas tenían que
enviar datos hasta la otra orilla del océano, ya tomaban sus precauciones. La consigna
era no confiar en nada que aprovechase los ocho bits y respetar el ASCII original sobre
todas las cosas... al fin y al cabo, allí no leían con acentos y las guitarras
"Ibáñez" se vendían sin problemas como "Ibanez".
De todas formas, no sólo de ASCII vive un ordenador y algunos
archivos, como los de imágenes, necesitan los ocho bits; incluso en América. Sin ir más
lejos, una imagen "gif", usa 256 colores en cada píxel y éste se guarda en un
octeto. La solución fue transformar estos archivos en texto de siete bits para poder
enviarlos en un mensaje. Luego, el receptor debería transformar el texto en un archivo de
ocho bits. El paso de transformar el archivo en texto se conoce como UUENCODE y la
descodificación del receptor como UUDECODE. Las dos U significan "Unix to
Unix", porque éste es el sistema operativo para el que se preparó el procedimiento
de codificación, luego adoptado como un estándar; no sin reparos, porque hay varias
versiones de UUENCODE. La verdad es que el proceso es bastante engorroso y en la
actualidad casi todos los programas codifican y descodifican automáticamente. Muchos
programas de correo electrónico y noticias Usenet, todavía reciben los archivos adjuntos
mediante UUENCODE.
La cuestión de los archivos estaba solucionada, pero todavía no
era posible enviar un texto con acentos. ¿Para que? Simplemente, porque llegó Internet y
los mensajes pueden viajar por medio globo hasta llegar al destinatario, aunque éste se
encuentre a 10 kilómetros de casa. ¿Y no puede uno estar suscrito a la lista de correo
de Lingüística Española EcoSEL desde Connecticut?.
Y llegó Internet
La verdad, millones de personas acostumbradas a usar la tabla ISO
Latin-1 en sus ordenadores, no pueden estar pendientes de si sus mensajes pasan o no por
servidores devoradores del octavo bit. Y si se inventó el UUENCODE para los archivos, los
textos no podían ser menos. De nuevo los genios se reunieron y el invento fue bautizado
como MIME (Multi-prupose Internet Mail Extensions). El propósito de las extensiones es
sustituir los caracteres especiales con algún equivalente en siete bits. Además, el MIME
incorpora una nueva codificación para archivos adjuntos al correo electrónico, como
imágenes o programas, conocida como Base 64. Este sistema esta sustituyendo al UUENCODE.
En el texto que reproducíamos al principio del artículo, puede ver
el equivalente en MIME porque contiene caracteres especiales. Si el receptor y
destinatario tienen configurado correctamente el programa de correo, el texto debería
leerse así: "Desde que a principios de año cambié de programa de correo
electrónico, algunos dicen recibir caracteres extraños en mis mensajes ¿Qué está
pasando?". Para usar el sistema correctamente, debe tener en cuenta varios
factores, porque algunos programas tratan el MIME de formas diferentes. Por ejemplo, es
posible configurar el programa para usar MIME de ocho bits o la alternativa, más
recomendable, llamada "Quoted Printable", de siete bits. Otro problema está en
el encabezado del mensaje, que muchos programas no tratan como MIME. Así, evite entrar
caracteres que requieren ocho bits en el asunto del mensaje y en el nombre del remitente.
Los sistemas de transformación como este, tienen una parte
negativa. Las modificaciones siempre significan un dispendio de bits, porque para MIME una
eñe, que debería ocupar un carácter, es transformada en "=F1"; el triple.
Pero el mayor derroche está en las páginas web y el lenguaje HTML (HyperText Markup
Language). Y ahora, que la mayoría de programas de correo permiten enviar mensajes
codificados en HTML, el despilfarro se multiplica. Una "í" en una web es ocho
veces mayor: "í". Cuando un navegador interpreta una página web y
antes de presentarla en el monitor, transforma todas las órdenes que hay entre el signo
"&" y el punto y coma, en el carácter especial equivalente.
Al hablar de páginas HTML, surge una nueva cuestión con las tablas
de caracteres. En realidad, el protocolo HTTP (HyperText Transfer Protocol) funciona con
ocho bits. Esto significa que, para que el visitante vea una "á", no parece ser
necesario que el código HTML emplee los 64 bits de "Á"; con los 8 de
"á", debería ser suficiente. Esto es cierto siempre y cuando el visitante del
web use la misma tabla de caracteres. En caso de que la página se visualice en un
ordenador fuera de los dominios de la ISO 8859-1, la "á" puede ser cualquier
otra cosa. Para evitar el problema, todos los navegadores son capaces de interpretar las
órdenes HTML que antes comentábamos. Los únicos caracteres de la tabla ISO 8859-1 que
no tienen equivalencia en código HTML, son los comprendidos entre el 128 y el 159. Para
el resto, encontrará una tabla completa en http://www.pemberley.com/janeinfo/latin1.html.
Tabla
2
El futuro de 16 bits
Muchos sistemas operativos ya son capaces de entender un nuevo
estándar, el Unicode (http://www.unicode.org), que en lugar de ocho bits emplea
dieciséis. 65.536 combinaciones son suficientes para representar todos los caracteres de
todos los idiomas del planeta. El problema está en que todos los caracteres en un archivo
de texto ocuparán un byte más, justo el doble que ahora. De momento, los anchos de banda
en Internet no están para estos lujos y nos conformaríamos con que el protocolo de
transmisión de correo SMTP fuera sustituido de una vez por todas con el nuevo ESMTP, de 8
bits.
Mientras tanto, no olvide revisar la configuración MIME de su
programa de correo electrónico y asegúrese de que en sus páginas web no tengan ningún
carácter exótico para los visitantes de según que latitudes. O deberá poner un aviso
"Under Unicode construction".
Las normas que se han tratado en este artículo están reguladas por
estas organizaciones:
Tabla 1
90 en base 2 (binario), correspondiente al carácter "Z"
en una tabla ASCII, y su transformación a base 10 (decimal):
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
Cada uno de los dígitos
binarios de 90, multiplicados por ... |
128 |
64 |
32 |
16 |
8 |
4 |
2 |
1 |
El peso de cada posición en
base 10... (en base 2, el peso
de cada posición es el producto de la anterior por 2) |
0 |
64 |
0 |
16 |
8 |
0 |
2 |
0 |
y sumando todos los
productos, da como resultado 90 en decimal (base 10). Es el valor de una "Z" en
ASCII. |
En realidad, el mecanismo es idéntico a cuando evaluamos
expresiones en base 10, "la nuestra". Por ejemplo, observe los dígitos del
número 1830:
1 |
8 |
3 |
0 |
Cada uno de los dígitos
decimales de 1830, multiplicados por ... |
1000 |
100 |
10 |
1 |
el peso de cada posición en
base 10... (en base 10, el peso
de cada posición es el producto de la anterior por 10) |
1000 |
800 |
30 |
0 |
y sumando todos los
productos, da como resultado 1830. |
Tabla 2
Códigos HTML HTML para representar los caracteres
especiales de la tabla ISO 8859-1 (Latin-1)
Código - Caracter - HTML
192 À À
193 Á Á
194 Â Â
195 Ã Ã
196 Ä Ä
197 Å Å
198 Æ Æ
199 Ç Ç
200 È È
201 É É
202 Ê Ê
203 Ë Ë
204 Ì Ì
205 Í Í
206 Î Î
207 Ï Ï
208 Ð Ð
209 Ñ Ñ
210 Ò Ò
211 Ó Ó
212 Ô Ô
213 Õ Õ
214 Ö Ö
216 Ø Ø
217 Ù Ù
218 Ú Ú
219 Û Û
220 Ü Ü
221 Ý Ý
222 Þ Þ
223 ß ß
224 à à
225 á á
226 â â
227 ã ã
228 ä ä
229 å å
230 æ æ
231 ç ç
232 è è
233 é é
234 ê ê
235 ë ë
236 ì ì
237 í í
238 î î
239 ï ï
240 ð ð
241 ñ ñ
242 ò ò
243 ó ó
244 ô ô
245 õ õ
246 ö ö
248 ø ø
249 ù ù
250 ú ú
251 û û
252 ü ü
253 ý ý
254 þ þ
255 ÿ ÿ |