Technorati Profile Add to Technorati Favorites ELECTRONICA DESARROLLO

viernes, 5 de febrero de 2010

LOS CARACTERES Y EL CODIGO ASCII

Este blog fue diseñado para apoyar a la comunidad de desarrolladores de electrónica. Se publicarán artículos de proyectos desarrollados por el Administrador del blog, Ingeniero Electrónico, quien estará atento a sus inquietudes o sugerencias igualmente todos pueden compartir sus conocimientos e intercambiar opiniones o aportes dentro de un marco de respeto y tolerancia. Los artículos publicados aquí son elaborados con tal sencillez que son totalmente comprensibles y los proyectos indicados pueden ser llevados a cabo por cualquier estudiante o profesional del ramo de la electrónica.

--English-------Español


LOS CARACTERES Y EL CODIGO ASCII

Justificación
: Cuando hablamos de información y mensajes de datos en diseño electrónico necesariamente tenemos que hablar de caracteres y también de su representación especial (codificación) por que sabemos que la información se envía y recibe a través de medios digitales. Dado que en el mundo existen muchos idiomas es natural que existan miles de caracteres, por lo tanto existirán muchas tablas de códigos para representar dichos caracteres que es lo que confunde a los usuarios de dichas tablas, por ejemplo, la confusión existente entre la codificación ASCII y los códigos ALT de teclado para usuarios de aplicaciones Microsoft.
En este artículo trataré de aclarar las dudas más comunes sobre codificación de caracteres y haré una breve introducción a los caracteres ASCII que son los más básicos para la comunicación en diseño electrónico así como su representación en algunos sistemas numéricos importantes.

Objetivos:
  • Introducir al lector de este blog de diseño electrónico en los conceptos de sistemas de representación de información y codificación, teniendo en cuenta que el lector conoce los sistemas numéricos y ha trabajado previamente con ellos. En este artículo no se explican los sistemas numéricos pero tiene vínculos a sus explicaciones.
  • Diferenciar que es el código ASCII, los caracteres de control, el código ASCII Extendido, las Páginas de Código, los Códigos Unicode y los códigos ALT de teclado.
  • Desarrollar una aplicación online, bajo el lenguaje de programación Java, que facilite la conversión de los caracteres ASCII entre diferentes tipos de representación de caracteres más comunes tales como: Decimal, Hexadecimal, Binario y BCD.
Utilidad: Hallar a través de la herramienta online de este artículo los códigos equivalentes para los caracteres ASCII entre los sistemas Decimal, Binario, Hexadecimal, BCD. Dar el verdadero nombre a cada carácter ASCII. También comprender la codificación ASCII y por que se utiliza en diseño electrónico.

Fundamentos

En electrónica, gran parte del manejo de la información (datos) se lleva a cabo empleando medios digitales, lo cual implica que existen estándares y normas para codificar la información de tal forma que la máquina pueda interpretar dicha información y mostrársela de la manera adecuada a un usuario humano o a otra máquina.
Los componentes más importantes de un mensaje son los caracteres que en últimas reunidos todos forman lo que llamamos un alfabeto. Dado que cada carácter empleará un medio digital entonces a cada carácter se le asigna un valor en el sistema numérico elegido y esto es lo que se conoce como codificación.

Por ejemplo, a alguien se le ocurrió enumerar cada uno de las letras del alfabeto inglés del 1 al 26, esta persona posee un hardware y un firmware especial y quiere transmitir la palabra “hello” de un dispositivo electrónico a otro, entonces lo hace empleando su codificación así: 85121215, dígito a dígito. A esto se le denomina codificación.

En general cualquier codificación es independiente del medio de transmisión que puede ser alámbrico, inalámbrico o incluso satelital.

Nota: Es importante no confundir los términos codificación y encriptación.

Puesto que el tema de la codificación no es nuevo existen diferentes estándares para la codificación de caracteres y por supuesto cuando se habla de comunicación, almacenamiento y análisis de información en ingeniería electrónica es necesario conocer los sistemas numéricos y el sistema de codificación de los datos. Los sistemas básicos en los que se codifican los caracteres son: el Sistema Decimal, el Sistema Binario, el Sistema Hexadecimal y el Sistema BCD.

En diseño electrónico, cuando transmitimos información es muy probable que en nuestro receptor, por ejemplo el HyperTerminal de Windows, obtengamos caracteres de los cuales desconocemos su interpretación en hexadecimal o en binario, la respectiva conversión podría aclararnos cual es el mensaje correcto que hemos recibido. Es muy común que los caracteres enviados estén codificados en ASCII.

El código ASCII o US-ASCII fue creado en 1963 para transferir información entre equipos eléctricos y entre equipos electrónicos basados en los caracteres comunes del alfabeto Norteamericano. Inicialmente tenía únicamente algunos signos de puntuación, los dígitos arábigos y las letras en mayúscula, luego en 1967 se agregó la lista de caracteres en minúscula del alfabeto norteamericano. Si quieres algo más de historia puedes ver este enlace.
Actualmente, el código ASCII está compuesto por 128 códigos, de los cuales los 32 (0 a 31) primeros y el 127 se les conoce como caracteres de control o caracteres no imprimibles cuando el dato se envía (salida de datos), pero cuando estos códigos de control se visualizan en pantalla pueden verse caracteres especiales para los mismos valores. Como información adicional los caracteres de control se utilizaban para controlar las impresoras y otros periféricos a través de los puertos paralelo y serial de un ordenador.

En la herramienta online de este artículo se muestran todos los caracteres ASCII y sus respectivos valores numéricos para distintos sistemas numéricos.

En diseño electrónico es muy común utilizar el código ASCII para comunicar dos dispositivos sin importar si se está efectuando un control (maestro-esclavo) o si se está transmitiendo información (maestro-maestro).
El código ASCII se utiliza por que cada carácter tiene dos nibbles lo que facilita su manipulación y empaquetamiento cuando se transmiten varios bytes. Aunque todos los caracteres del código ASCII se representen con 7 bits, se utilizan los 8 bits, simplemente el MSB es siempre 0.
Muchas personas podrían pensar que si se utilizara el último bit (MSB) del byte de los códigos ASCII podrían ampliar el número de caracteres a 256 (2^8) con lo que podrían incluir otros símbolos, lo que se conoce como el código ASCII Extendido. Esto fue lo que pensaron muchas personas al encontrar el código ASCII tan limitado (solo para el idioma inglés) para sus idiomas, pero con la mala suerte que esta idea la tenían las corporaciones fabricantes las cuales construyeron sus propios códigos ASCII Extendidos que luego se denominaron páginas de código.

Dado que la codificación de caracteres también se utiliza para la comunicación entre un teclado y un ordenador así como la visualización en pantalla de lo digitado desde el teclado por parte del usuario común, entonces todos los teclados de un sistema de cómputo tienen sus propios caracteres, los cuales dependerán de la casa fabricante y del idioma. Por ejemplo, para ver el diseño o disposición de los caracteres en los teclados de Microsoft para diferentes idiomas haz clic aquí.

No obstante, no todos los caracteres aparecen en las teclas. A veces necesitamos incluir en nuestros escritos caracteres especiales ya sea por rigurosidad del mismo escrito o para darle un mejor aspecto. Es posible también que dependiendo de la fuente utilizada puedan incluirse algunos caracteres y otros no, por ejemplo las fuentes Arial y Symbol no poseen exactamente los mismos caracteres. En este momento es cuando surgen las dudas para el usuario común.
Los caracteres en un teclado y los códigos de caracteres en los ordenadores o sistema de cómputo comerciales se rigen por las páginas de código dispuestas en el sistema computacional. Todas las páginas de código poseen los 128 primeros caracteres pertenecientes al código ASCII pero los superiores a 128 se basan en el ASCII Extendido propio de la casa fabricante y del idioma. Como existen muchas Páginas de código para los caracteres esto es lo que causa la confusión para el usuario común. Sin embargo debo anotar que esta también es una razón para que los diseñadores electrónicos usen solo el código ASCII para transmitir información ya que este es independiente del fabricante o del idioma por que todas las páginas de código lo incluyen sin importar el sistema operativo.

A medida que la codificación de caracteres se ha ido universalizando también se ha buscado un estándar común de códigos para caracteres que incluya todos los caracteres de todos los idiomas así como caracteres especiales en una única tabla, es así como podemos, por ejemplo, pulsar ALT+NUMERO en Word, donde NUMERO puede ser incluso un valor decimal superior a 256 y así obtener algún carácter. Entonces, ya no solo las Páginas de Código están presentes sino que también lo hacen los estándares Unicode, en sus diferentes versiones, dentro de las cuales las más utilizada es UTF-8. Todo esto confunde mucho más al usuario común.
Tratando de aclarar las cosas, en la figura 1, podemos observar la lógica de una tabla de caracteres completa para Microsoft DOS teniendo en cuenta la página de códigos PC850 (Página de códigos multilingüe, incluidos todos los caracteres de la mayoría de los idiomas europeos, norteamericanos y sudamericanos) y el estándar UTF-8.


Figura 1. Distribución de los códigos de caracteres para MS DOS.


Se debe tener en cuenta que dependiendo del idioma, la fuente o incluso el sistema operativo o el fabricante las páginas de código pueden cambiar entre ordenadores, es decir que los códigos ALT+NUMERO pueden variar de un ordenador a otro excepto para el código ASCII.

Si su sistema operativo es Windows 2000, XP o Vista y desea saber cual es la página de códigos activa en su equipo siga estos pasos:
  1. Vaya a la línea de comandos (CMD), ya sea por ejecutar (Windows+R) o por todos los programas ->accesorios -> símbolo del sistema.
  2. Escriba la siguiente instrucción CHCP.
  3. Pulse intro.
Los caracteres ASCII en otros sistemas operativos:
1. En Linux y Ubuntu: en el procesador de texto respectivo digite Ctrl + Shift + U + código ASCII en Hexadecimal (el indicador de mayúsculas debe estar apagado). En general Linux y Ubuntu tienen la página de códigos Unicode UTF-8.
2. En sistemas operativos Mac: Si desea introducir un carácter fuera del diseño del teclado puede seguir estos pasos .

Utilizando la Herramienta Online

1. Haz Clic en el Botón Caracteres ASCII.



2. En la ventana que aparece, llamada Los Caracteres ASCII, selecciona un carácter de la lista. Usa la barra vertical para buscar un carácter específico.
3. Las diferentes representaciones del carácter ASCII aparecerán en la misma ventana.
4. El código ALT + Número Decimal es aplicable solo para usuarios de Microsoft Office.