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.
Columnas
Haz clic en una celda para copiar el valor.
Tabla A: ASCII, de 0 a 127
128 de 128 códigos
| Dec | Hex | Oct | Binario | Carácter | Descripción |
|---|---|---|---|---|---|
| ^@ carácter nulo (NUL) | |||||
| ^A inicio de encabezado (SOH) | |||||
| ^B inicio de texto (STX) | |||||
| ^C fin de texto (ETX), el Ctrl+C | |||||
| ^D fin de transmisión (EOT), el Ctrl+D | |||||
| ^E consulta (ENQ) | |||||
| ^F acuse de recibo (ACK) | |||||
| ^G campana (BEL) | |||||
| ^H retroceso (BS) | |||||
| ^I tabulación (TAB) | |||||
| ^J salto de línea (LF) | |||||
| ^K tabulación vertical (VT) | |||||
| ^L avance de página (FF) | |||||
| ^M retorno de carro (CR) | |||||
| ^N shift out (SO) | |||||
| ^O shift in (SI) | |||||
| ^P escape de enlace de datos (DLE) | |||||
| ^Q control de dispositivo 1 (DC1), el XON | |||||
| ^R control de dispositivo 2 (DC2) | |||||
| ^S control de dispositivo 3 (DC3), el XOFF | |||||
| ^T control de dispositivo 4 (DC4) | |||||
| ^U acuse negativo (NAK) | |||||
| ^V sincronización (SYN) | |||||
| ^W fin de bloque de transmisión (ETB) | |||||
| ^X cancelar (CAN) | |||||
| ^Y fin del medio (EM) | |||||
| ^Z sustituir (SUB), el Ctrl+Z | |||||
| ^[ escape (ESC) | |||||
| ^\ separador de archivo (FS) | |||||
| ^] separador de grupo (GS) | |||||
| ^^ separador de registro (RS) | |||||
| ^_ separador de unidad (US) | |||||
| espacio | |||||
| signo de exclamación | |||||
| comillas dobles | |||||
| almohadilla | |||||
| signo de dólar | |||||
| porcentaje | |||||
| et (ampersand) | |||||
| comilla simple (apóstrofo) | |||||
| abre paréntesis | |||||
| cierra paréntesis | |||||
| asterisco | |||||
| más | |||||
| coma | |||||
| guion (signo menos) | |||||
| punto | |||||
| barra | |||||
| dígito 0 | |||||
| dígito 1 | |||||
| dígito 2 | |||||
| dígito 3 | |||||
| dígito 4 | |||||
| dígito 5 | |||||
| dígito 6 | |||||
| dígito 7 | |||||
| dígito 8 | |||||
| dígito 9 | |||||
| dos puntos | |||||
| punto y coma | |||||
| menor que | |||||
| igual | |||||
| mayor que | |||||
| signo de interrogación | |||||
| arroba | |||||
| letra mayúscula A | |||||
| letra mayúscula B | |||||
| letra mayúscula C | |||||
| letra mayúscula D | |||||
| letra mayúscula E | |||||
| letra mayúscula F | |||||
| letra mayúscula G | |||||
| letra mayúscula H | |||||
| letra mayúscula I | |||||
| letra mayúscula J | |||||
| letra mayúscula K | |||||
| letra mayúscula L | |||||
| letra mayúscula M | |||||
| letra mayúscula N | |||||
| letra mayúscula O | |||||
| letra mayúscula P | |||||
| letra mayúscula Q | |||||
| letra mayúscula R | |||||
| letra mayúscula S | |||||
| letra mayúscula T | |||||
| letra mayúscula U | |||||
| letra mayúscula V | |||||
| letra mayúscula W | |||||
| letra mayúscula X | |||||
| letra mayúscula Y | |||||
| letra mayúscula Z | |||||
| abre corchete | |||||
| barra invertida | |||||
| cierra corchete | |||||
| acento circunflejo | |||||
| guion bajo | |||||
| acento grave | |||||
| letra minúscula a | |||||
| letra minúscula b | |||||
| letra minúscula c | |||||
| letra minúscula d | |||||
| letra minúscula e | |||||
| letra minúscula f | |||||
| letra minúscula g | |||||
| letra minúscula h | |||||
| letra minúscula i | |||||
| letra minúscula j | |||||
| letra minúscula k | |||||
| letra minúscula l | |||||
| letra minúscula m | |||||
| letra minúscula n | |||||
| letra minúscula o | |||||
| letra minúscula p | |||||
| letra minúscula q | |||||
| letra minúscula r | |||||
| letra minúscula s | |||||
| letra minúscula t | |||||
| letra minúscula u | |||||
| letra minúscula v | |||||
| letra minúscula w | |||||
| letra minúscula x | |||||
| letra minúscula y | |||||
| letra minúscula z | |||||
| abre llave | |||||
| barra vertical (pipe) | |||||
| cierra llave | |||||
| tilde (virgulilla) | |||||
| ^? suprimir (DEL) |
Tabla B: de 128 a 255
128 de 128 códigos
| Dec | Hex | Windows-1252 | ISO-8859-1 | Unicode | Bytes UTF-8 | HTML | UTF-8 leído como Windows-1252 |
|---|---|---|---|---|---|---|---|
| control C1 | |||||||
| sin carácter | control C1 | ||||||
| control C1 | |||||||
| control C1 | |||||||
| control C1 | |||||||
| control C1 | |||||||
| control C1 | |||||||
| control C1 | |||||||
| control C1 | |||||||
| control C1 | |||||||
| control C1 | |||||||
| control C1 | |||||||
| control C1 | |||||||
| sin carácter | control C1 | ||||||
| control C1 | |||||||
| sin carácter | control C1 | ||||||
| sin carácter | control C1 | ||||||
| control C1 | |||||||
| control C1 | |||||||
| control C1 | |||||||
| control C1 | |||||||
| control C1 | |||||||
| control C1 | |||||||
| control C1 | |||||||
| control C1 | |||||||
| control C1 | |||||||
| control C1 | |||||||
| control C1 | |||||||
| control C1 | |||||||
| sin carácter | control C1 | ||||||
| control C1 | |||||||
| control C1 | |||||||
Este rango no es ASCII. Es lo que suele llamarse ASCII extendido, y cada tabla pone algo distinto aquí. La tabla muestra Windows-1252 e ISO-8859-1 lado a lado, con los bytes en UTF-8 y lo que aparece cuando el UTF-8 se lee como Windows-1252.
Los códigos 0x81, 0x8D, 0x8F, 0x90 y 0x9D no tienen carácter en Windows-1252. En ISO-8859-1, todo el rango de 128 a 159 son controles C1.
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.
| Carácter | Alt+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 inputNo 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 // 4Por 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
latin1en lugar deutf8mb4. 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
charseten el headerContent-Type. El navegador adivina la codificación. - Un archivo guardado como "ANSI", que en Windows en español es Windows-1252.
btoasolo acepta caracteres hasta 255.btoa("€")lanzaInvalidCharacterError, ybtoa("ñ")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; // 18El 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: