¿Cuál es la diferencia entre texto ASCII y Unicode?

¿Cuál es la diferencia entre texto ASCII y Unicode?

ASCII y Unicode son ambos estándares que se refieren a la representación digital de texto, específicamente a los caracteres que componen el texto. Sin embargo, los dos estándares son significativamente diferentes, con muchas propiedades que reflejan su respectivo orden de creación.





América contra el universo

El Código Estándar Estadounidense para el Intercambio de Información (ASCII), como era de esperar, está dirigido a una audiencia estadounidense, escribiendo en el alfabeto inglés. Se trata de letras sin acento, como A-Z y a-z, además de una pequeña cantidad de símbolos de puntuación y caracteres de control.





En particular, no hay forma de representar palabras prestadas adoptadas de otros idiomas, como café en ASCII, sin anglicizarlos sustituyendo caracteres acentuados (p. ej., cafetería ). Las extensiones ASCII localizadas se desarrollaron para satisfacer las necesidades de varios idiomas, pero estos esfuerzos hicieron que la interoperabilidad fuera incómoda y claramente ampliaban las capacidades de ASCII.





Por el contrario, el conjunto de caracteres codificados universal (Unicode) se encuentra en el extremo opuesto de la escala de ambición. Unicode intenta adaptarse a la mayor cantidad posible de sistemas de escritura del mundo, en la medida en que cubre idiomas antiguos y el conjunto de símbolos expresivos favoritos de todos, los emoji.

¿Juego de caracteres o codificación de caracteres?

En términos simples, un juego de caracteres es una selección de caracteres (por ejemplo, A-Z) mientras que una codificación de caracteres es una correspondencia entre un juego de caracteres y un valor que se puede representar digitalmente (por ejemplo, A = 1, B = 2).



El estándar ASCII es efectivamente ambos: define el conjunto de caracteres que representa y un método para asignar cada carácter a un valor numérico.

Por el contrario, la palabra Unicode se usa en varios contextos diferentes para significar cosas diferentes. Puede pensar en él como un término que lo abarca todo, como ASCII, para referirse a un conjunto de caracteres y una serie de codificaciones. Pero, debido a que hay varias codificaciones, el término Unicode se usa a menudo para referirse al conjunto general de caracteres, en lugar de cómo se asignan.





Tamaño

Debido a su alcance, Unicode representa muchos más caracteres que ASCII. ASCII estándar utiliza un rango de 7 bits para codificar 128 distintos caracteres . Unicode, por otro lado, es tan grande que necesitamos usar terminología diferente solo para hablar de ello.

Unicode atiende a 1,111,998 direccionables puntos de código. Un punto de código es aproximadamente análogo a un espacio reservado para un personaje, ¡pero la situación es mucho más complicada que eso cuando empiezas a profundizar en los detalles!





Una comparación más útil es cuántos scripts (o sistemas de escritura) se admiten actualmente. Por supuesto, ASCII solo maneja el alfabeto inglés, esencialmente el alfabeto latino o romano. La versión de Unicode producida en 2020 va mucho más allá: incluye soporte para un total de 154 scripts.

Almacenamiento

El rango de 7 bits de ASCII significa que cada carácter se almacena en un solo byte de 8 bits; el bit de repuesto no se utiliza en ASCII estándar. Esto hace que los cálculos de tamaño sean triviales: la longitud del texto, en caracteres, es el tamaño del archivo en bytes.

Puede confirmar esto con la siguiente secuencia de comandos de bash. Primero, creamos un archivo que contiene 12 letras de texto:

la velocidad de Internet sube y baja
|_+_|

Para comprobar que el texto está en codificación ASCII, podemos usar el expediente mando:

|_+_|

Finalmente, para obtener el número exacto de bytes que ocupa el archivo, usamos el estado mando:

|_+_|

Dado que el estándar Unicode se ocupa de una gama mucho mayor de caracteres, un archivo Unicode naturalmente ocupa más espacio de almacenamiento. Exactamente cuánto depende de la codificación.

Al repetir el mismo conjunto de comandos de antes, utilizando un carácter que no se puede representar en ASCII, se obtiene lo siguiente:

|_+_|

Ese único carácter ocupa 3 bytes en un archivo Unicode. Tenga en cuenta que bash creó automáticamente un archivo UTF-8 ya que un archivo ASCII no puede almacenar el carácter elegido (€). UTF-8 es, con mucho, la codificación de caracteres más común para Unicode; UTF-16 y UTF-32 son dos codificaciones alternativas, pero se utilizan mucho menos.

UTF-8 es una codificación de ancho variable, lo que significa que usa diferentes cantidades de almacenamiento para diferentes puntos de código. Cada punto de código ocupará entre uno y cuatro bytes, con la intención de que los caracteres más comunes requieran menos espacio, proporcionando un tipo de compresión incorporada. La desventaja es que determinar los requisitos de longitud o tamaño de un fragmento de texto determinado se vuelve mucho más complicado.

ASCII es Unicode, pero Unicode no es ASCII

Para compatibilidad con versiones anteriores, los primeros 128 puntos de código Unicode representan los caracteres ASCII equivalentes. Dado que UTF-8 codifica cada uno de estos caracteres con un solo byte, cualquier texto ASCII también es un texto UTF-8. Unicode es un superconjunto de ASCII.

Sin embargo, como se muestra arriba, muchos archivos Unicode no se pueden usar en un contexto ASCII. Cualquier carácter que esté fuera de los límites se mostrará de manera inesperada, a menudo con caracteres sustituidos que son completamente diferentes de los previstos.

Uso moderno

Para la mayoría de los propósitos, ASCII se considera en gran medida un estándar heredado. Incluso en situaciones que solo admiten la escritura latina, donde el soporte completo para las complejidades de Unicode es innecesario, por ejemplo, generalmente es más conveniente usar UTF-8 y aprovechar su compatibilidad ASCII.

Windows 7 necesita permiso para realizar esta acción

En particular, las páginas web deben guardarse y transmitirse utilizando UTF-8, que es el predeterminado para HTML5. Esto contrasta con la web anterior, que trataba en ASCII de forma predeterminada antes de que fuera reemplazada por Latin 1.

Un estándar que está cambiando

La última revisión de ASCII tuvo lugar en 1986.

Por el contrario, Unicode se sigue actualizando anualmente. Regularmente se agregan nuevos guiones, personajes y, en particular, nuevos emoji. Con solo una pequeña fracción de estos asignados, es probable que el conjunto de caracteres completo crezca y crezca en el futuro previsible.

Relacionado: Los 100 emojis más populares explicados

ASCII frente a Unicode

ASCII cumplió su propósito durante muchas décadas, pero Unicode ahora lo ha reemplazado de manera efectiva para todos los propósitos prácticos que no sean sistemas heredados. Unicode es más grande y, por tanto, más expresivo. Representa un esfuerzo de colaboración mundial y ofrece una flexibilidad mucho mayor, aunque a expensas de cierta complejidad.

Cuota Cuota Pío Correo electrónico ¿Qué es el texto ASCII y cómo se usa?

El texto ASCII parece críptico, pero tiene muchos usos en Internet.

Leer siguiente
Temas relacionados
  • Tecnología explicada
  • Emojis
  • Jerga
  • Cultura web
  • Unicode
Sobre el Autor Bobby Jack(58 Artículos publicados)

Bobby es un entusiasta de la tecnología que trabajó como desarrollador de software durante la mayor parte de dos décadas. Es un apasionado de los juegos, trabaja como editor de reseñas en Switch Player Magazine y está inmerso en todos los aspectos de la publicación en línea y el desarrollo web.

Más de Bobby Jack

Suscríbete a nuestro boletín

¡Únase a nuestro boletín de noticias para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!

Haga clic aquí para suscribirse