Technorati Profile Add to Technorati Favorites ELECTRONICA DESARROLLO: LOS CARACTERES Y EL CODIGO ASCII

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.

31 comentarios:

davidhlopez dijo...

GRACIAS

Elizabeth dijo...

Hola, he leído un libro en el cual, pulsando alt + 35 se puede escribir el código ASCII de los tres puntos, estos .·.
Pero cuando lo hago, solamente sale éste #
Podrías, por favor, decirme cuál es el comando para escribir el código de esos tres puntos que forman un triángulo?
Te lo agradezco mucho!
Saludos.

Desarrollamos Proyectos dijo...

Hola Elizabeth espero te encuentres bien.
Entrando en materia, cuando pulsas ALT + 35 el símbolo que te aperece es correcto puesto que este es el caracter ascii correspondiente a # si te fijas bien en la herramienta online que he puesto en este post también aparece de esta forma. El carácter que tu deseas imprimir en pantalla no existe dentro de la tabla ASCII por ende en tablas superiores ,que abarcan los caracteres ASCII y otros más, como la de caracteres UNICODE este carácter aparece como ALT + 1566 y su nombre en español es "Signo de Puntuación Arábigo de Triple Punto" y su nombre correspondiente en inglés es "Arabic Triple Dot Punctuation Mark". Como lo meciono en este artículo, este código ALT dependerá del sistema operativo que poseas, del idioma y de la página de códigos que maneje este S.O., a mi me funciona con ALT + 1566 en un S.O Windows XP SP3 idioma Español.
Puedes probarlo y si no te funciona busca otros códigos ALT para este símbolo con los nombres ""Signo de Puntuación Arábigo de Triple Punto" o "Arabic Triple Dot Punctuation Mark".
Saludos,
ELECTRONICA DESARROLLO

Elizabeth dijo...

Cuánto te lo agradezco! Si supieras lo que he buscado...
Me funciona con alt + 1566, pero no en las cartas por Outlook, porque aparece un triángulo sólido, sino en Word, lo que igual me vendría bien, ya que mis trabajos los escribo allí. Lástima que es tan pequeño que apenas se nota, y yo necesito que se vea bien. Lo agrando aumentando el formato pero me quedan unas letras enormes para el texto, ja ja...
De todas maneras, tu amabilidad para responderme no tiene precio y te agradezco mucho.
Un abrazo!
Elizabeth

alex dijo...

Hola,entre al enlace de ASCII pero tengo un trabajo que abarca todos los caracteres me podrian ayudar?

Desarrollamos Proyectos dijo...

Hola Alex, tal como explico en este artículo el código ASCII solo se compone de los 128 caracteres, si necesitas más deberás mirar en una tabla superior como Unicode o en las páginas de código de los diferentes fabricantes. Si lo que necesitas es un software pues con mucho gusto te lo diseñamos a la medida solo debes contactarnos en los números especificados para Colombia.
Saludos,
ELECTRONICA DESARROLLO

~A952~ dijo...

oye no se como escribir los codigos Hexadecimal,unicode y UTF-8 ya que no biene nada sobre la convinacion de las teclas y en el "mapa de caracteres" me vienen cosas como codigo hexadecimal y cosas asi y aplasto Alt+numero me salen otros signos

Anónimo dijo...

oye necesito saber como poner algunos signos del codigo Hexadecimal, decimal y UTF-8 ya que no me se las convinaciones y el unico que conosco es Alt+numero
te agradeceria tu ayuda

Anónimo dijo...

oye disculpa tantos post lo que pasa es que despues de cada mensaje me marcaba como error

Desarrollamos Proyectos dijo...

Hola, Anónimo para poder escribir los códigos unicode en tu PC debes PRIMERO fijarte si tu sistema operativo tiene una página de códigos compatible con Unicode. SEGUNDO los códigos hexadecimal nunca van a funcionar con el ALT + NUMERO. Entonces, lo que debes hacer es si tu S.O. soporta los caracteres unicode, convertir el número hexadecimal a decimal y luego intentar con el ALT como? pues la mayoría de S.O. traen una calculadora científica allí puedes hacer la conversión, a mi me funciona pero con Ms office. Otra manera de hacerlo es buscar en internet la tabla UNICODE con códigos en decimal e intentar con ALT+ NUMERO. Y, una última opción es copiar el caracter unicode de la página donde lo encontraste y pegarlo en tu documento.
Saludos, Electrónica Desarrollo.

angelito_rockero dijo...

hola...amm...de pura casualidad..tu sabes cual es el codigo para poner la estrella ..esta estrella ★ ?
realmente la he buscado en muchos lados..y por alguna extraña razon nadie sabe ¬¬
tu sabras de casualidad... ñ.ñ
con cariño mary jo!!

Desarrollamos Proyectos dijo...

Hola Mary, tu caracter se llama "estrella negra" o "black star character". En windows y office este funciona así:
Black star small = Alt+8902
Black star big = Alt+9733
Espero te sirva, de lo contrario investiga en la tabla unicode.
Saludos, Electronicadesarollo

penelope dijo...

Hola. en la portatel HP con microft windows XP no funciona el ALT64 para arroba, me toca siempre que copiarlo. podria indicarme otra opciòn. en la letra Q esta tambien el arroba pero tampoco funciona. gracias por la ayuda que me puedas dar.

Desarrollamos Proyectos dijo...

Hola Penelope, pienso que el arroba que se encuentra en la Q puede ser una opción, ya probaste con la tecla ALT GR + Q?

Saludos,
ELECTRONICADESARROLLO

victor dijo...

Bueno tu blogg. Me haz ayudado uff. Una consulta. Soy novato en programacion con Java. Cuando utilizo telnet le envio una orden de activacion a un equipo de comunicaciones con la tecla F3 de mi teclado. Necesito hacer esto vía una conexion con Java (socket). Sabras tu como puedo enviar esto. Una duda mas, en el teclado como puedo saber como se representan las teclas de funcion como F1, F2... Y las demas que hay

Desarrollamos Proyectos dijo...

Hola Victor gracias por leer mi blog. Con respecto a tus inquietudes puedo comentarte que las teclas de función son asignadas según el aplicativo que estes manejando no son parte de ninguna tabla de caracteres y por ende no tienen ningún código específico asignado. Si fuera tú averiguaría más sobre los comandos de tecla y como estos son manipulados por los S.O. es probable que debas adentrante más en los códigos de protocolos PS/2.
Saludos, ELECTRONICADESARROLLO.

In Puris Naturalibus dijo...

Hola amigos, una pregunta, cual es el codigo para este simbolo ✈
Gracias!!!

Pepe dijo...

Hola: Soy nuevo en esta página. Estoy escribiendo unos documentos y me tropiezo con los dos signos que a continuación describo y que no he podido hallarlos como caracteres de código ASCII. Se trata de una V cruzada por un signo parecido a un 7 estilizado; el segundo el mismo 7 pero atravesando esta vez una R. Se trata ago así como para hacer una lectura y una respuesta a esa lectura. Estoy estancado buscando pero estoy perdido en el empeño. ¿Me podéis ayudar? Agradecido.
José Luis AGuilera. jlaguilera@lasalleandalucia.net.

Desarrollamos Proyectos dijo...

Estimado In Puris Naturalibus el símbolo ✈ no hace parte del código ASCII sino de una tabla superior.
En Word 2007 me funciona con
ALT + 9992.

Espero te sirva.
Saludos ELECTRONICADESARROLLO

Desarrollamos Proyectos dijo...

Estimado PEPE sin el nombre exacto del caracter (en inglés o español) o una imagen del mismo es muy complicado para mí saber a que te refieres.

Gracias por escribir.
ELECTRONICADESARROLLO.

Dave Rodriguez dijo...

Estoy investigando sobre ASCII para mis proximos proyectos en la universidad, y esto me parecio fascinante,muchas gracias por la informacion y la dedicacion.

Anónimo dijo...

Buenas y anticipadamente muchas gracias por su apoyo: Acabo de instalar windows 7 en mi Dell Optiples 745 con un dual core de 3.0 Mhz y al prcionar ALT+ cualquier tecla del teclado numerico no me funciona ascii(lo que es obligatorio para enviar una direccion de internet..) me es muy incomodo, mi teclado es en ingles como podria hacer para habilitar ASCII o tener acceso a la arroba sin tyener que estar copiando y pegando??saludos

Desarrollamos Proyectos dijo...

Hola, la verdad me parece extraño tu caso.
Primero: verifica que el teclado numérico esté habilitado.
Segundo: prueba con ALT+64 en el bloc de notas.Debería aparecer el signo arroba.
Tercero prueba con: ALT GR + Q en el bloc de notas. Debería aparecer el signo arroba.
Puedes tambien ir a panel de control y opción Reloj, idioma y Región allí encontrarás una subsección llamada "Cambiar teclados u otros método de entrada", en la ventana que aparece encontrarás un botón llamado "cambiar teclados";pero dudo que tenga que ver con el idioma, es más el ASCII se creó originalmente para los caracteres en inglés.
Espero te siva de algo estos simples tips, Salu2 Electrónica Desarrollo.

David Pimienta Gómez dijo...

hola queria saber si el codigo ASCII en un decoficador o codificador.
gracias

David Pimienta Gómez dijo...

hola
queria saber si el codigo ASCII es decodificador o codificador
gracias

David Pimienta Gómez dijo...

hola queria saber si el codigo ASCII en un decoficador o codificador.
gracias

Desarrollamos Proyectos dijo...

Estimado David, en un sentido esctricto podría decirte que no es ni codificador ni decodificador, pero para no enredar las cosas desde el punto de vista del ser humano el código ASCII es un sistema codificador. Saludos

Anónimo dijo...

Como introdu<co un caracter del ASCII extendido en el hyperterminal

Motor Lopez dijo...

Muy buen post ,
Un sitio que me ha resultado muy útil como programador web es www.elcodigoascii.com.ar
Es un sitio muy simple pero practico
saludos y gracias de nuevo

Pepe Luis dijo...

ese mismo esta en ingles me ha resultado muy util
www.theasciicode.com.ar
para saber como es en ingles el nombre de algunos caracteres


exelente BLOG
Saludos y gracias

Roberto Riesco dijo...

Hola estoy realizando un trabajo con arduino y necesito mandar el código ascII en decimal de los números pero no de los que están encima de las letras si no los del teclado numérico al igual que el del Enter de este.
Pero no los encuentro en ninguna tabla, podrían decirme cuales son o donde mirarlo.
gracias de antemano