De hecho, ASCII se concibió originalmente como un código de 7 bits. Esto se hizo mucho antes de que los bytes de 8 bits se volvieran ubicuos, e incluso en la década de 1990 se podía encontrar software que asumía que podía usar el octavo bit de cada byte de texto para sus propios fines ("no limpio de 8 bits"). Hoy en día, la gente lo ve como una codificación de 8 bits en la que los bytes 0x80 a 0xFF no tienen un significado definido, pero eso es un retcon .
Hay docenas de codificaciones de texto que utilizan el octavo bit; se pueden clasificar como compatibles con ASCII o no, y de ancho fijo o variable. Compatible con ASCII significa que, independientemente del contexto , los bytes individuales con valores de 0x00 a 0x7F codifican los mismos caracteres que lo harían en ASCII. No querrá tener nada que ver con una codificación de texto no compatible con ASCII si es posible que pueda evitarlo; Los programas ingenuos que esperan ASCII tienden a malinterpretarlos de una manera catastrófica, a menudo que rompe la seguridad. Están tan desaprobados hoy en día que (por ejemplo) HTML5 prohíbe su uso en la Web pública, con la desafortunada excepción de UTF-16 . No voy a hablar más de ellos.
Una codificación de ancho fijo significa lo que parece: todos los caracteres se codifican utilizando el mismo número de bytes. Para ser compatible con ASCII, una codificación con fijo debe codificar todos sus caracteres usando un solo byte, por lo que no puede tener más de 256 caracteres. La codificación más común hoy en día es Windows-1252 , una extensión de ISO 8859-1 .
Solo hay una codificación compatible con ASCII de ancho variable que vale la pena conocer hoy en día, pero es muy importante: UTF-8 , que empaqueta todo Unicode en una codificación compatible con ASCII. Realmente desea usar esto si puede administrarlo.
Como nota final, "ASCII" hoy en día toma su definición práctica de Unicode, no su estándar original (ANSI X3.4-1968), porque históricamente hubo varias docenas de variaciones en el repertorio de 127 caracteres ASCII - por ejemplo, algunos de la puntuación puede sustituirse por letras acentuadas para facilitar la transmisión del texto en francés. Hoy en día todas esas variaciones son obsoletas, y cuando la gente dice "ASCII" quiere decir que los bytes con valor 0x00 a 0x7F codifican puntos de código Unicode U + 0000 a U + 007F. Es probable que esto solo le importe si alguna vez se encuentra escribiendo un estándar técnico.
Si está interesado en la historia de ASCII y las codificaciones que lo precedieron, comience con el artículo "La evolución de los códigos de caracteres, 1874-1968" (copia de samizdat en http://falsedoor.com/doc/ascii_evolution-of- character-codes.pdf ) y luego buscar sus referencias (muchas de las cuales no están disponibles en línea y pueden ser difíciles de encontrar incluso con acceso a una biblioteca universitaria, lamento decirlo).