Qué es ASCII y cómo codifica los caracteres

Autor: Publicado

En breve: ASCII es un estándar que asigna a 128 caracteres números del 0 al 127, lo que permite almacenar y transmitir texto como datos. Incluye, entre otros, las letras del alfabeto inglés, los dígitos, los signos de puntuación y los códigos de control, pero no contiene letras polacas como «ą» o «ł». Hoy en día, el texto suele guardarse en UTF-8, que mantiene la compatibilidad con ASCII para esos primeros 128 caracteres.

Cómo funciona ASCII y qué significa su nombre

ASCII son las siglas de American Standard Code for Information Interchange, es decir, código estándar estadounidense para el intercambio de información. Es una codificación de caracteres: una regla que establece qué valor numérico corresponde a cada carácter. El ordenador almacena los números en forma de bits, y el programa que lee el texto los interpreta según la codificación elegida.

ASCII es una codificación de 7 bits. Siete bits permiten representar 128 valores distintos, del 0 al 127. En los archivos, cada carácter ASCII suele ocupar un byte, es decir, ocho bits, cuyo bit más significativo tiene valor cero.

Por ejemplo, a la letra mayúscula A le corresponde el número decimal 65, que se escribe como 41 en hexadecimal y como 01000001 en binario usando un byte. Son tres formas de representar el mismo valor, no tres códigos de carácter distintos. La notación 0x41, habitual en la documentación y la programación, indica precisamente un valor hexadecimal.

Qué caracteres contiene la tabla ASCII

ASCII contiene 95 caracteres imprimibles, incluido el espacio. Las otras 33 posiciones corresponden a códigos de control, que no representan símbolos visibles corrientes. Sirven, entre otras cosas, para indicar tabulaciones o finales de línea.

Carácter o funciónCódigo decimalCódigo hexadecimal
Tabulación (TAB)909
Salto de línea (LF)100A
Retorno de carro (CR)130D
Espacio3220
Dígito 04830
Letra mayúscula A6541
Letra minúscula a9761
Supresión (DEL)1277F

Un dígito como carácter no es lo mismo que un número. El texto 123 consta de tres caracteres cuyos códigos ASCII son 49, 50 y 51. Para realizar cálculos con ese texto, el programa debe interpretarlo como un número.

Las letras mayúsculas y minúsculas tienen códigos distintos, por lo que A y a son caracteres diferentes. Del mismo modo, un espacio no es una «ausencia de datos»: tiene su propio código y ocupa espacio en el archivo.

Los códigos CR y LF explican algunas diferencias entre los archivos de texto. En los sistemas de tipo Unix, el final de línea suele indicarse con LF, mientras que en Windows se utiliza la pareja CRLF. Por tanto, dos documentos pueden verse idénticos en el editor aunque contengan secuencias de bytes distintas al final de cada línea.

ASCII, Unicode y UTF-8: en qué se diferencian

ASCII no incluye las letras polacas con signos diacríticos, el alfabeto griego, el cirílico ni los emojis. Para trabajar con textos en varios idiomas se utiliza Unicode, un estándar que asigna a los caracteres y a otros elementos del texto números llamados puntos de código. UTF-8 es una forma de representar esos puntos de código como secuencias de bytes.

Unicode y UTF-8 no son sinónimos. Unicode determina, entre otras cosas, qué número corresponde a cada carácter, mientras que UTF-8 establece cómo representar ese número en los datos. ASCII combina un conjunto reducido de caracteres con una codificación numérica sencilla.

Los primeros 128 puntos de código de Unicode corresponden a ASCII. En UTF-8, cada uno de esos caracteres se representa con exactamente el mismo byte que en ASCII. Por eso, un archivo que contiene únicamente texto ASCII válido también es un archivo UTF-8 válido.

La diferencia puede verse con ejemplos de palabras polacas, cuya escritura conservamos para mantener el recuento de bytes. La palabra kot («gato») ocupa tres bytes tanto en ASCII como en UTF-8. En cambio, la palabra żółw («tortuga») no puede representarse solo con ASCII. En UTF-8 ocupa siete bytes: dos para cada una de las letras ż, ó y ł, y uno para w.

Por qué «ASCII extendido» puede resultar confuso

La expresión «ASCII extendido» no designa una única codificación universal. A veces se utiliza para referirse a distintas codificaciones de 8 bits que conservan el intervalo de ASCII y aprovechan los valores adicionales del 128 al 255. Entre ellas se encuentran Windows-1250 e ISO-8859-2, utilizadas para textos de Europa Central.

Un mismo byte de ese intervalo adicional puede representar caracteres distintos según la codificación. Si un programa lee el archivo con una regla incorrecta, pueden aparecer símbolos erróneos en lugar de las letras polacas. En polaco se conocen coloquialmente como «krzaki», literalmente «arbustos», por su aspecto confuso. Por tanto, indicar únicamente que se trata de un «archivo ASCII» no basta para describir un documento que contiene caracteres ajenos al conjunto básico.

Cuándo importa ASCII en la práctica

ASCII sigue apareciendo en la documentación de protocolos, en los formatos de archivo y en las restricciones de los campos de formularios. El mensaje «solo se permiten caracteres ASCII» excluye, entre otros, las letras polacas, las comillas tipográficas y las rayas. Sin embargo, no significa automáticamente que el campo acepte todos los caracteres ASCII: las reglas de uso o el validador pueden admitir únicamente letras y dígitos.

Si un archivo importado muestra caracteres incorrectos, sigue este breve procedimiento:

  1. Conserva una copia del original antes de empezar a guardar cambios.
  2. Comprueba la codificación indicada por la fuente del archivo, por ejemplo, en los ajustes de exportación.
  3. Abre el archivo en un editor utilizando esa codificación y comprueba las letras polacas.
  4. Solo después de leerlo correctamente, guarda una copia en UTF-8, si el sistema de destino admite esa codificación.

Para un documento nuevo que contenga texto en polaco, elige UTF-8, salvo que el destinatario exija otro formato. Si te piden que uses «ASCII», averigua también el conjunto exacto de caracteres permitidos: así evitarás que se rechacen los datos aunque la codificación sea correcta.

Véase también: ¿Qué es AGI?

Lee también

Descubre cómo PHP-FPM atiende peticiones PHP, en qué se diferencia de un servidor web y cómo ajustar sus procesos al tráfico y los recursos.
Conoce BIND, el software abierto de servidor DNS: sus funciones, cómo gestiona dominios y cuándo conviene instalarlo por tu cuenta.
Descubre qué son el registro REGON de Polonia y su número, en qué se diferencian de NIP y KRS y cómo verificar los datos de una empresa.