Código ASCII

Los 128 códigos ASCII en decimal, hexadecimal, octal y binario, con entidad HTML y escape de JS. Más abajo, el rango de 128 a 255 de Windows-1252 y los códigos Alt para escribir ñ, @ y otros caracteres con el teclado.

Acepta el carácter, el código en decimal, hex (0x41 o 41h), U+0041 o el nombre. La búsqueda vale para las dos tablas.
Columnas

Haz clic en una celda para copiar el valor.

Códigos Alt en Windows

Mantén pulsada Alt y escribe el número en el teclado numérico (la fila de números de arriba no funciona). Sin cero delante, Alt+NNN usa la CP850, la página de códigos de la consola de Windows en español, portugués, francés y alemán (en EE. UU. es la CP437). Con cero delante, Alt+0NNN usa Windows-1252.

Códigos Alt de los caracteres más buscados
CarácterAlt+NNN (CP850)Alt+0NNN (Windows-1252)
no existe

Qué es ASCII

ASCII es una tabla de 128 códigos, del 0 al 127, que usa 7 bits por carácter. Nació en los años 60 como estándar estadounidense (ANSI X3.4) y está descrita en el RFC 20. Caben las letras sin tilde, los dígitos, la puntuación y 33 caracteres de control que no se ven en pantalla.

Todo lo que pasa de 127 ya no es ASCII, aunque alguien lo llame "ASCII extendido".

Caracteres de control que aún aparecen a diario

De los 33 caracteres de control, la mayoría cayó en desuso, pero algunos los ves cada semana. NUL (0) marca el fin de una cadena en C y aparece en archivos binarios. TAB (9) es la tabulación. LF (10) y CR (13) forman el salto de línea: Linux y macOS usan solo LF, Windows usa el par CR y LF (CRLF). ESC (27) abre las secuencias de color del terminal, y DEL (127) es el único control fuera del rango de 0 a 31.

La diferencia en el salto de línea provoca errores reales, como un script de shell que no corre por un CR al final de la línea. Git puede convertir al hacer commit y checkout según core.autocrlf: true en Windows e input en Mac y Linux suele bastar. En un CSV, un salto de línea dentro de un campo solo se lee bien si el campo va entre comillas.

git config --global core.autocrlf input

No existe un solo "ASCII extendido"

Quien habla de "ASCII extendido" casi siempre se refiere a una de tres tablas: ISO-8859-1, Windows-1252 o CP850. Coinciden de 0 a 127 y cambian de ahí hacia arriba. Y el navegador ni siquiera trata "latin1" como ISO-8859-1: según el Encoding Standard del WHATWG, "latin1", "iso-8859-1" e incluso "ascii" se leen como Windows-1252.

ISO-8859-1 (de 1987) usa de 128 a 159 para controles C1, que nadie escribe. Windows-1252 pone símbolos útiles en esos 32 códigos, como €, “ ”, … y •, y deja vacíos solo cinco. CP850 es otra cosa: es la página de códigos de la consola de Windows y de los códigos Alt, y en ella la "ç" vale 135, no 231.

Cuando necesites una de estas tablas, nómbrala. "ASCII" solo llega hasta el 127.

ASCII, Unicode y UTF-8

Unicode es la lista de todos los caracteres, y UTF-8 es la forma más común de guardarlos en bytes. De 0 a 127, UTF-8 usa un byte con el mismo valor que ASCII, así que un archivo solo con ASCII es idéntico en ambos. Más arriba, cada carácter ocupa de 2 a 4 bytes: una letra con tilde ocupa 2, un símbolo como € ocupa 3 y un emoji ocupa 4.

Esto importa cuando el límite es en bytes, como en una columna de base de datos o un header. El Contador de caracteres y palabras muestra los dos números lado a lado. En JavaScript, fíjate en que length cuenta code units, no caracteres ni bytes:

"ç".length                             // 1
new TextEncoder().encode("ç").length   // 2
"😀".length                            // 2
new TextEncoder().encode("😀").length  // 4

Por qué la "ç" se vuelve "ç"

La "ç" en UTF-8 ocupa dos bytes, C3 y A7. Si un programa lee esos bytes como Windows-1252, cada byte se vuelve un carácter: C3 es "Ã" y A7 es "§". De ahí sale el "ç". Casi siempre uno de los extremos está mal configurado: la base de datos en latin1, el CSV guardado sin BOM, el header Content-Type sin charset o el archivo guardado como "ANSI".

Las causas más comunes:

  • Una tabla de MySQL en latin1 en lugar de utf8mb4. El dato entra bien y sale mal, o al revés.
  • Un CSV en UTF-8 abierto en Excel sin BOM. Excel asume la página de códigos de Windows y muestra el mojibake.
  • Una respuesta HTTP sin charset en el header Content-Type. El navegador adivina la codificación.
  • Un archivo guardado como "ANSI", que en Windows en español es Windows-1252.
  • btoa solo acepta caracteres hasta 255. btoa("€") lanza InvalidCharacterError, y btoa("ñ") funciona pero codifica el byte F1 (latin1), no C3 B1 (UTF-8). Para Base64 de UTF-8, convierte antes a bytes. El Decodificador de Base64 lo hace.
btoa("€");                                              // InvalidCharacterError
btoa("ç");                                              // "5w==" (byte E7)
btoa(String.fromCharCode(...new TextEncoder().encode("ç"))); // "w6c=" (bytes C3 A7)
ALTER TABLE clientes CONVERT TO CHARACTER SET utf8mb4;

El hash tiene el mismo problema: el SHA-256 de "ç" no es igual en latin1 (byte E7) y en UTF-8 (bytes C3 A7). Si un hash no coincide con el de otro sistema, revisa la codificación del texto en el Generador de Hash.

ASCII en el código

La tabla explica trucos que aparecen en todo tipo de código. Las mayúsculas y las minúsculas se diferencian en 32 (un solo bit), y los dígitos "0" a "9" ocupan de 48 a 57, así que c - '0' en C o Java convierte el carácter en número. En regex, [ -~] captura los imprimibles, del espacio (32) a la tilde (126).

"a".charCodeAt(0) - "A".charCodeAt(0); // 32
"7".charCodeAt(0) - "0".charCodeAt(0); // 7
/^[ -~]*$/.test("Olá");                // false
"B".charCodeAt(0) - 48;                // 18

El CNPJ alfanumérico brasileño usa la misma idea. Para calcular el dígito verificador, cada carácter vale su código ASCII menos 48: "0" a "9" siguen valiendo de 0 a 9, "A" vale 17, "B" vale 18 y así hasta la "Z", que vale 42. Para verlo funcionar, usa el Generador de CNPJ o comprueba un número en el Validador de CNPJ.

Entidades HTML y escapes

En HTML solo necesitas entidad para los caracteres que el parser lee como marcado: &, < y >, más " dentro de atributos.   es el espacio de no separación, el código 160, y no es igual al espacio normal (32).

Con la página en UTF-8, las tildes y los símbolos pueden ir directo en el HTML: no hace falta ñ ni ñ. En JavaScript y JSON, el escape \u00f1 sirve cuando el archivo no es UTF-8, y \n, \t y \ son las formas cortas. En una URL, la "ñ" se vuelve %C3%B1, que son sus bytes UTF-8.

Códigos Alt en Windows

El código Alt no es ASCII. Alt+NNN, sin cero, usa la CP850 en Windows en español, portugués, francés y alemán: Alt+164 escribe la "ñ" y Alt+64 escribe la arroba. Alt+0NNN, con cero delante, usa Windows-1252: Alt+0241 escribe la misma "ñ". El número cambia porque cambia la tabla.

Escribe siempre en el teclado numérico, con Bloq Num activado. En un portátil sin teclado numérico, lo más simple es copiar el carácter de la tabla de arriba.

Fuentes

Comprobadas el 3 de noviembre de 2026: