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.
| Carácter de control | Decimal | Hexadecimal | Binario (7 bits) | Para qué sirve |
|---|---|---|---|---|
| Nulo (NUL) | 0 | 00 | 0000000 | Marca el fin de una cadena en varios lenguajes |
| Tabulación horizontal (TAB) | 9 | 09 | 0001001 | Salta al próximo tabulador |
| Salto de línea (LF) | 10 | 0A | 0001010 | Baja a la línea siguiente |
| Retorno de carro (CR) | 13 | 0D | 0001101 | Vuelve al comienzo de la línea |
| Escape (ESC) | 27 | 1B | 0011011 | Inicia secuencias de control |
| Espacio | 32 | 20 | 0100000 | Primer carácter imprimible |
| Suprimir (DEL) | 127 | 7F | 1111111 | Borra 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.
- Los dígitos del «0» al «9» ocupan del 48 al 57 (30 a 39 en hexadecimal). El valor de un dígito es su código menos 48: el «7» es 55, y 55 − 48 = 7.
- Las mayúsculas van del 65 («A») al 90 («Z») y las minúsculas del 97 («a») al 122 («z»).
- La diferencia entre una mayúscula y su minúscula es siempre 32: «A» = 65 y «a» = 97; «C» = 67 y «c» = 99. En binario solo cambia un bit: 01000001 para «A» y 01100001 para «a».
- Para saber qué lugar del abecedario ocupa una mayúscula, restá 64: «C» es 67 y 67 − 64 = 3, la tercera letra.
- Como todas las mayúsculas (65 a 90) tienen códigos menores que las minúsculas (97 a 122), un orden alfabético «por código» pone «Zebra» antes de «apple». Muchos programas necesitan una opción de comparación aparte para ordenar bien.
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.
| Carácter | Punto de código | Bytes en UTF-8 | Bytes (hexadecimal) |
|---|---|---|---|
| A | U+0041 | 1 | 41 |
| é | U+00E9 | 2 | C3 A9 |
| ñ | U+00F1 | 2 | C3 B1 |
| € | U+20AC | 3 | E2 82 AC |
| 😀 | U+1F600 | 4 | F0 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.
- 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.
- Usá los botones de filtro (Control, Dígitos, Mayúsculas, Minúsculas, Signos) para ver solo un grupo.
- 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.
- 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.