Articles La Torre de Babel digital
 

Entrada
La Web
Bitassa
E-Mail

 
"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 ÿ ÿ

 

 

[ Entrada | Articles | Bitassa | E-Mail ]