ASCII y Unicode: qué son y para qué sirven

Una computadora solo entiende números, así que cada letra que ves en pantalla es un código. ASCII fue la primera tabla de códigos que se volvió estándar y Unicode es la que usamos hoy para escribir en cualquier idioma. Acá ves cómo funcionan, qué códigos conviene conocer, por qué a veces aparecen símbolos raros en lugar de acentos y cómo consultar todo en la tabla.

Actualizado:

Qué es una codificación de caracteres

Una codificación es un acuerdo: «el número 65 significa la letra A». Cuando escribís un texto, el programa guarda esos números; cuando otra persona lo abre, su programa los vuelve a traducir a letras usando el mismo acuerdo. Si los dos no usan la misma tabla, el texto sale mal.

Hay que separar dos ideas. Una es el juego de caracteres, la lista de qué números corresponden a qué símbolos. La otra es cómo esos números se guardan en bytes. En ASCII las dos coinciden de forma trivial; en Unicode no, y ahí entra UTF-8.

ASCII: 128 caracteres de 7 bits

ASCII (siglas de American Standard Code for Information Interchange) se estandarizó en la década de 1960. Usa 7 bits, o sea 2 elevado a 7 = 128 códigos, del 0 al 127. De ellos, 33 son caracteres de control (del 0 al 31 y el 127) y 95 son imprimibles (del 32 al 126, incluido el espacio).

No incluye letras con tilde, ni la ñ, ni el símbolo del euro: se diseñó para el inglés. Eso explica por qué después hicieron falta otras tablas.

Los códigos que más vas a encontrar. El espacio (32) cuenta como imprimible aunque no se vea.
Carácter de controlDecimalHexadecimalBinario (7 bits)Para qué sirve
Nulo (NUL)0000000000Marca el fin de una cadena en varios lenguajes
Tabulación horizontal (TAB)9090001001Salta al próximo tabulador
Salto de línea (LF)100A0001010Baja a la línea siguiente
Retorno de carro (CR)130D0001101Vuelve al comienzo de la línea
Escape (ESC)271B0011011Inicia secuencias de control
Espacio32200100000Primer carácter imprimible
Suprimir (DEL)1277F1111111Borra el carácter

Relaciones que conviene recordar

La tabla no está ordenada al azar. Con unas pocas regularidades podés leer códigos de memoria.

Fin de línea: LF, CR y CRLF

Un salto de línea parece algo simple, pero se escribe distinto según el sistema. Unix, Linux y macOS usan un solo carácter, LF (10). Windows usa dos seguidos, CR y LF (13 y 10), conocidos como CRLF. Los viejos teletipos necesitaban dos órdenes distintas: volver el carro al comienzo y avanzar el papel una línea.

Esa diferencia es la causa de archivos que se ven todo en una línea en un editor básico, o con un símbolo extraño al final de cada renglón. Si buscás qué código tiene cada uno, escribí LF o CR en el buscador de la tabla ASCII.

El «ASCII extendido» no es un estándar

Como un byte tiene 8 bits y ASCII solo usa 7, sobraban 128 códigos libres (del 128 al 255) y cada fabricante y región los llenó a su manera. Eso se conoce como «ASCII extendido», pero no existe una única tabla: hay muchas, llamadas páginas de códigos. Dos de las más conocidas son Latin-1 (ISO-8859-1), donde la é es el código 233, y Windows-1252, parecida pero con diferencias en los códigos 128 a 159 (ahí está, por ejemplo, el euro).

El problema es que el código 233 significa «é» en una tabla y otra cosa en otra. Un texto escrito con una tabla y leído con otra mostraba basura. Unicode nació para terminar con ese desorden.

Unicode y UTF-8

Unicode asigna un número único, llamado punto de código, a cada carácter de casi todos los sistemas de escritura del mundo, más símbolos y emojis. Hoy tiene más de 150.000 caracteres. Se escribe con el prefijo U+ y en hexadecimal: la «A» es U+0041, la «ñ» es U+00F1, el euro es U+20AC y el emoji de cara sonriente es U+1F600. Los primeros 128 puntos de código son exactamente los de ASCII.

UTF-8 es la forma más usada de guardar esos números en bytes, y usa entre 1 y 4 según el carácter. Los 128 de ASCII ocupan un solo byte idéntico al de siempre, así que un texto ASCII es también un texto UTF-8 válido. El resto ocupa más bytes.

Cuanto más lejos de ASCII, más bytes ocupa el carácter.
CarácterPunto de códigoBytes en UTF-8Bytes (hexadecimal)
AU+0041141
éU+00E92C3 A9
ñU+00F12C3 B1
€U+20AC3E2 82 AC
😀U+1F6004F0 9F 98 80

Por qué aparece «Ã±» en lugar de «ñ»

Es el error más común y tiene explicación exacta. La ñ en UTF-8 son dos bytes: C3 y B1. Si un programa cree que el texto está en Latin-1, lee cada byte como un carácter: el C3 es «Ã» y el B1 es «±». Resultado: «Ã±». Pasa lo mismo con «é», que se ve como «Ã©», y con «canción», que aparece como «canción».

La solución casi siempre es indicarle al programa que abra el archivo como UTF-8 (en un editor de texto o en la configuración de la importación de una hoja de cálculo). Cuando ocurre al revés, texto en Latin-1 leído como UTF-8, suelen aparecer rombos con un signo de pregunta, porque esos bytes sueltos no forman secuencias UTF-8 válidas.

Cómo usar la tabla ASCII y el conversor

La herramienta «Tabla ASCII» muestra los 128 caracteres con su código en decimal, hexadecimal, octal y binario, y el nombre de los de control.

  1. Escribí en el buscador un carácter, un código o el nombre de uno de control (por ejemplo A, 65, 41 o LF) para encontrar su fila.
  2. Usá los botones de filtro (Control, Dígitos, Mayúsculas, Minúsculas, Signos) para ver solo un grupo.
  3. Para convertir, escribí un texto en «Texto» y elegí el formato (decimal, hexadecimal, octal o binario): abajo aparecen los códigos. «Hola» da 72 111 108 97 en decimal y 48 6F 6C 61 en hexadecimal.
  4. También podés hacerlo al revés: pegá códigos separados por espacios o comas en «Códigos» y se arma el texto. En hexadecimal se aceptan prefijos como 0x41.

Si el texto tiene caracteres que no son ASCII, como la ñ, la herramienta lo avisa y muestra su código Unicode. Para ver los bytes reales en UTF-8 usá «Texto a binario»: la ñ da 11000011 10110001, dos bytes de 8 bits. Los límites: la tabla muestra solo ASCII estándar, no el extendido, y todo se calcula en tu navegador sin enviar el texto a ningún servidor.

Preguntas frecuentes

¿Cuántos caracteres tiene el ASCII?

128, con códigos del 0 al 127 y 7 bits cada uno. De ellos, 33 son de control y 95 son imprimibles, contando el espacio.

¿Cuál es el código ASCII de la letra A y de la a?

La «A» es 65 (41 en hexadecimal, 01000001 en binario) y la «a» es 97 (61 en hexadecimal, 01100001 en binario). Siempre difieren en 32.

¿Cuál es la diferencia entre ASCII y Unicode?

ASCII tiene 128 caracteres pensados para el inglés. Unicode tiene más de 150.000, de casi todos los idiomas y emojis, y sus primeros 128 son los mismos que los de ASCII.

¿Qué es UTF-8?

Es la forma más usada de guardar texto Unicode en bytes. Usa de 1 a 4 bytes por carácter: los de ASCII ocupan uno, una ñ ocupa dos y un emoji cuatro.

¿Por qué mi texto muestra «Ã±» o «Ã©»?

Porque un texto guardado en UTF-8 se está leyendo como Latin-1. Abrí el archivo indicando la codificación UTF-8 y se arregla.