Skip to content

Glossary

ASCII

La codificación de caracteres original de 7 bits

By Published Updated

ASCII (American Standard Code for Information Interchange, pronunciado “ass-key”) es una codificación de caracteres que asigna 128 símbolos a los enteros del 0 al 127. Definida en 1963 y estandarizada internacionalmente como ISO/IEC 646 en 1972.

Cobertura:

  • 0-31: caracteres de control (NUL, nueva línea, retorno de carro, tabulación, escape, campana)
  • 32-47: puntuación y símbolos (espacio, !, ", #, $, %, etc.)
  • 48-57: dígitos 0-9
  • 58-64: más puntuación (:, ;, <, =, >, ?, @)
  • 65-90: mayúsculas A-Z
  • 97-122: minúsculas a-z
  • 127: DEL

ASCII cabe en 7 bits, razón por la que los viejos protocolos serie y los sistemas telegráficos usaban transmisión de 7 bits. El octavo bit se convirtió en el bit de paridad. Los sistemas modernos usan 8 bits por carácter; los 128 valores superiores (128-255) se interpretan de forma diferente según la codificación elegida (Latin-1, Windows-1252, etc.).

UTF-8 es retrocompatible con ASCII — cualquier texto ASCII es un archivo UTF-8 válido con bytes idénticos. Esa compatibilidad es una de las principales razones por las que UTF-8 ganó la guerra de codificaciones Unicode.

Ejemplo práctico

La cadena “Hi!” codificada en ASCII son tres bytes: H = 72 (0x48), i = 105 (0x69), ! = 33 (0x21). Escrito en binario: 01001000 01101001 00100001. Observe que el bit más alto de cada byte es cero — esa es la garantía de 7 bits. Compare con la misma cadena en UTF-16: 0048 0069 0021 — seis bytes para el mismo contenido, con ordenación de bytes little-endian añadiendo un BOM al inicio. Compare de nuevo con UTF-8: idéntico a ASCII porque cada carácter está en el rango 0-127. Ahora pruebe con “café”: ASCII no puede codificar la é (Unicode U+00E9); el codificador produce un error o sustituye por un signo de interrogación. UTF-8 codifica la é como dos bytes 0xC3 0xA9; Latin-1 la codifica como el byte único 0xE9. El mismo carácter visible, tres secuencias de bytes diferentes según la codificación elegida.

El complemento de ASCII para texto no inglés es Unicode, que asigna a cada carácter un punto de código y usa codificaciones (UTF-8, UTF-16, UTF-32) para serializarlos como bytes. UTF-8 fue diseñado específicamente por Ken Thompson y Rob Pike en 1992 para ser compatible con ASCII: cualquier archivo que contenga solo caracteres ASCII es idéntico en ASCII y UTF-8, razón por la que casi todos los protocolos de red y formatos de configuración en inglés pudieron actualizarse a Unicode sin cambios incompatibles.

Cuándo y por qué importa

ASCII importa al depurar errores de codificación, diseñar protocolos de red o trabajar con cualquier sistema que procese texto byte a byte. El error que envía una é como “cé” o “cé” o “c?” es siempre un desajuste ASCII/UTF-8/Latin-1 — en algún punto de la cadena, los bytes se decodificaron con la suposición errónea. Los algoritmos de ordenación que tratan las cadenas como bytes ordenarán las mayúsculas antes que las minúsculas por la ordenación ASCII — “Zebra” va antes que “apple” si ordena bytes en bruto, sorprendente para los usuarios que esperan orden lexicográfico sin distinción de mayúsculas. Las reglas de identificadores en los lenguajes de programación (nombres de variables, claves JSON) suelen restringirse a ASCII por portabilidad entre sistemas cuya codificación por defecto no puede asumirse. Cualquiera que diseñe un formato CSV, un formato de archivo de registro o un protocolo de red basado en texto se beneficia de saber qué sobrevive sin cambios en la cadena ASCII frente a qué se corrompe. Referencia: RFC 20 — Formato ASCII para intercambio en red.

Por qué importa el orden del alfabeto: ASCII situó intencionalmente las letras mayúsculas (65-90) antes que las minúsculas (97-122) con un desplazamiento fijo de 32 entre ellas. Activar o desactivar el bit 5 de cualquier byte de letra (el bit 0x20) cambia entre mayúsculas y minúsculas. Este truco de bits es la razón por la que toda la antigua biblioteca de cadenas C podía hacer tolower() con una sola operación aritmética, y está integrado en innumerables protocolos (nombres de cabeceras HTTP, etiquetas DNS) que son nominalmente insensibles a mayúsculas pero se basan en esta equivalencia exacta de inversión de bits. El truco falla en el momento en que llega Unicode — la I con y sin punto del turco es el contraejemplo canónico.

El legado de los caracteres de control que nadie puede eliminar: el rango 0-31 contiene restos del hardware de teletipo que ningún sistema moderno usa pero que todo analizador tiene que reconocer. NUL (0) termina las cadenas C; LF (10) y CR (13) dividen las líneas (Unix usa LF, Windows usa CRLF, el antiguo Mac OS usaba CR solo); HT (9) es el tabulador; ESC (27) inicia las secuencias de escape ANSI para terminales. El carácter de campana (7) en su día hacía sonar una campana física en los terminales Teletype Modelo 33; hoy activa la API de pitido del sistema en la mayoría de los sistemas operativos. Ninguno de estos podría diseñarse hoy — sobreviven porque medio siglo de formatos de archivo y protocolos de red los esperan. Referencia: ISO/IEC 646 — Tecnología de la información — Conjunto de caracteres codificados ISO de 7 bits.

Frequently asked questions

¿Qué es ASCII?
ASCII (American Standard Code for Information Interchange) es una codificación de caracteres de 7 bits que asigna 128 valores (0-127) a letras, dígitos, puntuación y caracteres de control. Se estandarizó en 1963 y sigue siendo la base de todas las codificaciones de texto modernas.
¿Cómo se usa ASCII en la práctica?
Cualquier archivo de texto en inglés, URL o cabecera HTTP que evite caracteres extendidos es ASCII válido. Los protocolos de correo como SMTP eran originalmente solo ASCII, razón por la que los asuntos de correo que no son ASCII deben codificarse con Base64 o quoted-printable.
¿Cuál es la diferencia entre ASCII y UTF-8?
UTF-8 es un superconjunto de ASCII: los primeros 128 puntos de código de UTF-8 son idénticos a ASCII, codificados como bytes únicos. UTF-8 se extiende más allá de 128 para cubrir más de 1,1 millones de puntos de código Unicode usando 2-4 bytes, mientras que ASCII se detiene en 127.
¿Por qué ASCII usa 7 bits en lugar de 8?
El comité de 1963 reservó el octavo bit para la verificación de paridad en líneas serie. Esto dejó 128 posiciones — suficientes para el alfabeto inglés, dígitos, puntuación y caracteres de control. El octavo bit fue usado posteriormente por codificaciones extendidas competidoras como ISO-8859-1.

Related

Published May 14, 2026 · Last reviewed May 31, 2026