lunes, 14 de marzo de 2011

HTG explica: que son los códigos de caracteres y en que difieren?

Como suele suceder, debajo de todo lo que usamos (sobre todo en lo que a ordenadores se refiere) hay mundos que ni siquiera imaginamos. Esto es válido para los códigos de caracteres, poca gente entiende que es ASCII, o Unicode y que tienen que ver con que ellos puedan publicar en facebook que les gusta Lady Gaga (a los que les guste, hay de todo en la viña del señor). Pero luego de que lean lo que abajo escrito está pensarán de otro modo. El de una de nuestras fuentes recurrentes (HTG) y pueden encontrar el original aquí si les interesa. Aquí vamos....

 ____   ____   ____   _   _  ___   ___  _  _   ____ 
)  _)\ /  _ \ / __ \ \ ( ) /) __( / _( ) () ( / __ \
| '__/ )  ' / ))__((  )\_/( | _)  ))_  | -- | ))__((
)_(    |_()_\ \____/   \_/  )___( \__( )_()_( \____/
                                                    

HTG explica: que son los códigos de caracteres y en que difieren?
ASCII, UTF-8, ISO-8859 ... Es posible que haya visto estos extraños apodos flotando por ahí, pero ¿qué significan realmente? Le explicaremos lo que es la codificación de caracteres y cómo estas siglas se relacionan con el texto que vemos en pantalla.

Bloques fundamentales de construcción
Cuando hablamos de lenguaje escrito, hablamos de letras como los bloques de construcción de las palabras, que a su vez construyen oraciones, párrafos, y así sucesivamente. Las letras son símbolos que representan sonidos. Cuando se habla sobre el lenguaje, se habla de grupos de sonidos que se unen para formar algún tipo de significado. Cada lenguaje tiene un complejo conjunto de reglas y definiciones que rigen esos significados. Si usted tiene una palabra, es inútil a menos que sepa en que idioma está y como utilizarla con otras en ese idioma.


En el mundo de las computadoras, usamos el término "caracter". Un carácter es una especie de concepto abstracto, definido por parámetros específicos, pero es la unidad fundamental de significado. La "A" latina no es lo mismo que "alfa" en griego o "Alif" en árabe porque tienen contextos diferentes - son de lenguas diferentes y tienen pronunciaciones algo diferentes - por lo que podemos decir que son caracteres diferentes. La representación visual de un carácter se llama "glifo" y diferentes conjuntos de glifos se llaman fuentes. Grupos de caracteres pertenecen a un "conjunto" o "repertorio".
Al escribir un párrafo y cambiar la fuente, no se están cambiando los valores fonéticos de las letras, se está cambiando su aspecto. Es sólo cosmético (pero no sin importancia!). Algunos idiomas, como los antiguos egipcios y chinos, usaban ideogramas, los cuales representan ideas completas en lugar de sonidos, y su pronunciación puede variar con el tiempo y la distancia. Si sustituye un carácter por otro, que está sustituyendo una idea. Es algo más que cambiar las letras, está cambiando un ideograma.

Codificación de caracteres

Cuando usted escribe algo en el teclado, o carga un archivo, ¿cómo sabe el ordenador que es lo que debe mostrar? Para eso existe la codificación de caracteres. Esos textos en su equipo no son en realidad letras, son una serie de pares de valores alfanuméricos. La codificación de caracteres actúa como una clave que define que valores corresponden a que caracteres, muy similar a cómo la ortografía determina qué sonidos corresponden a que letras. El código Morse es una especie de codificación de caracteres. El explica cómo ciertos grupos de rayas y puntos, como beeps, representan los caracteres. En el código Morse, los caracteres son solo letras, números y puntos. Hay muchas codificaciones de caracteres para computadoras que se traducen en letras, números, acentos, marcas de puntuacion, símbolos internacionales, y así sucesivamente.

A menudo en este tema, se emplea el término "páginas de código". Son esencialmente codificaciones de caracteres como el usado por compañías específicas, muchas veces con ligeras modificaciones. Por ejemplo, la página de código de Windows 1252 (anteriormente conocido como ANSI 1252) es una forma modificada de la norma ISO-8859-1. Son en su mayoría utilizados como un sistema interno para hacer referencia a la codificación de caracteres estándar y modificados, que que son específicos para los mismos sistemas. Al principio, la codificación de caracteres no era tan importante porque los equipos no se comunicaban entre sí. Con el auge de Internet y las redes convertidas en algo común, se ha vuelto algo cada vez más importante en nuestro día a día sin que nos demos cuenta.

Muchos tipos diversos.


Hay un montón de codificaciones de caracteres diferentes, y hay un montón de razones para ello. La codificación de caracteres que usted empleará va a depender de cuáles son sus necesidades. Si usted se comunica en ruso, tiene sentido utilizar una codificación de caracteres que soporte cirílico. Si usted se comunica en coreano, entonces usted querrá algo que represente Hangul y Hanja sin problemas. Si usted es un matemático, entonces usted querrá algo que tenga todos los símbolos científicos y matemáticos bien representados, así como los glifos griegos y latinos. Si usted es un bromista, tal vez podría beneficiarse de texto al revés. Y, si desea que todos los tipos de documentos sean vistos por cualquier persona, querrá una codificación bastante común y de fácil acceso.

Echemos un vistazo a algunas de las más comunes.


  • ASCII (American Standard Code for Information Interchange) - El Código Estándar Americano para Intercambio de Información es una de las codificaciones de caracteres mas viejas. Fue concebido originalmente basado en los códigos telegráficos y fue evolucionado con el tiempo para incluir más símbolos y algunos caracteres de control no impresos ahora obsoletos. Es probablemente tan básico como se puede obtener en términos de sistemas modernos, ya que se limita al alfabeto latino, sin caracteres acentuados. Su codificación de 7 bits sólo permite 128 caracteres, por lo que hay varias variantes no oficiales en uso en todo el mundo.
  • ISO-8859 - El grupo mas ampliamente usado de codificación de caracteres de la Organización Internacional de normas (ISO) es el número 8859. Cada una codificación específica se designa por un número, a menudo precedido por un apodo descriptivo, por ejemplo, ISO-8859-3 (Latin-3), ISO-8859-6 (Latino / árabe). Es un superconjunto de ASCII, lo que significa que los primeros 128 valores de la codificación son los mismos que ASCII. Es de 8 bits, sin embargo, y permite 256 caracteres, por lo que parte desde ahí, e incluye una gama mucho más amplia de caracteres, con cada codificación específica enfocada en un conjunto diferente de criterios. Latin-1 incluye un montón de letras acentuadas y símbolos, pero fue reemplazado más tarde con una serie revisada llamada Latin-9 que incluye glifos actualizados como el símbolo del euro.

  • Unicode - Este estándar de codificación aspira a la universalidad. En la actualidad incluye 93 secuencias de comandos organizados en varios bloques, con muchos en camino. Unicode funciona de forma diferente a otros juegos de caracteres en que en lugar de codificar directamente un glifo, cada valor se dirige más a un "punto de código." Estos son valores hexadecimales que corresponden a caracteres, pero los glifos mismos se proporcionan de manera individual por el programa, por ejemplo un navegador web.  Estos puntos de código suelen describirse como sigue: U+0040 (que se traduce en'@'). Codificaciones específicas bajo el estándar Unicode son UTF-8 y UTF-16. UTF-8 intenta permitir la máxima compatibilidad con ASCII. Es de 8 bits, pero permite codificar todos los caracteres a través de un mecanismo de sustitución y múltiples pares de valores por carácter. UTF-16 mantiene una perfecta compatibilidad con ASCII para una compatibilidad de 16 bits más completa con la norma.
  • ISO-10646 - Esta no es una codificación real, sólo un conjunto de caracteres Unicode que ha sido estandarizada por la ISO. Es sobre todo importante porque es el repertorio de caracteres utilizados por HTML. Carece de algunas de las funciones más avanzadas que proporciona Unicode que permiten el cotejo de derecha a izquierda junto con secuencias de comandos de izquierda a derecha. Sin embargo, funciona muy bien para su uso en Internet, ya que permite el uso de una amplia variedad de secuencias de comandos y permite que al navegador interpretar los glifos. Esto hace un poco más fácil la localización.

¿Qué codificación debo utilizar?
Bueno, ASCII funciona para la mayoría de los que hablan Inglés, pero no para mucho más. Veremos con mas frecuencia la norma ISO-8859-1, que funciona para la mayoría de los idiomas europeos occidentales. Las otras versiones de la norma ISO-8859 funcionan para el cirílico, el árabe, el griego, u otras secuencias de comandos específicos. Sin embargo, si desea mostrar varias secuencias de comandos en el mismo documento o en la misma página web, UTF-8 permite una mejor compatibilidad. También funciona muy bien para las personas que usan una puntuacion correcta, símbolos matemáticos, o algunos caracteres, tales como cuadros o casillas de verificación.

Hay desventajas en cada conjunto, sin embargo. ASCII es limitado en sus marcas de puntuacion, por lo que no funciona muy bien para corregir ediciones tipográficamente. Alguna vez ha copiado y pegado desde Word solo para obtener una extraña combinación de glifos? Ese es el inconveniente de la norma ISO-8859, o más exactamente, su supuesta inter-operabilidad con páginas de código del sistema operativo específico (te estamos mirando a ti, Microsoft!). El mayor inconveniente de UTF-8 es la falta de un soporte eficaz en aplicaciones de edición y publicación. Otro problema es que los navegadores no suelen interpretarlo y sólo muestran la marca de orden del bytes del caracter codificado en UTF-8. Esto da lugar a que se muestren glifos no deseados . Y, por supuesto, declarar una codificación y usar los caracteres de otra sin declararlos o referenciarlos de manera adecuada en una página web, hace que sea difícil para los navegadores renderizarlos correctamente y para los motores de búsqueda indexarlos adecuadamente.
Para sus propios documentos, manuscritos, etc, ud puede utilizar lo que necesite para hacer el trabajo. En lo que a la web respecta, sin embargo, parece que la mayoría de personas están de acuerdo sobre el uso de una versión de UTF-8 que no utiliza marca de orden de bytes, pero eso no es del todo unánime. Como puedes ver, cada codificación de caracteres tiene su propio uso, contexto, fortalezas y debilidades. Como un usuario final, probablemente no tendrá que lidiar con esto, pero ahora usted puede ahondar mas en este tema si así lo desea.