# Unicode

> La numeración universal de cada letra y símbolo, y por qué a veces se rompen los acentos.

- Nivel: Intermedio
- Temas: Software
- URL: https://tidbit.legios.com.ar/es/unicode/
- En inglés: [Unicode](https://tidbit.legios.com.ar/unicode/)

Las computadoras guardan el texto como números, así que cada carácter necesita uno. **Unicode** es el estándar mundial que se los asigna: la `A` es U+0041, la `ñ` es U+00F1, la `Ω` griega es U+03A9 y el emoji 😀 es U+1F600. Cubre prácticamente todos los sistemas de escritura en uso, además de muchos históricos y montones de símbolos: bastante más de cien mil caracteres en total. Antes de Unicode, cada región usaba su propia tabla incompatible, y un archivo escrito en una muchas veces salía desfigurado en otra.

Unicode dice qué número le toca a cada carácter; una **codificación** dice cómo escribir esos números como bytes en un archivo o en un mensaje por la red. La que domina es **UTF-8**. Guarda las letras básicas del inglés en un byte cada una, exactamente igual que el viejo estándar ASCII, y usa de dos a cuatro bytes para todo lo demás. Esa compatibilidad hacia atrás es una gran razón de su éxito: hoy la enorme mayoría de las páginas web están en UTF-8.

Cuando se rompen los acentos, casi siempre es por esto. Si un programa escribe "año" en UTF-8 y otro lee esos bytes suponiendo una codificación más vieja, como Latin-1, cada mitad de la `ñ` de dos bytes se muestra como un carácter aparte y aparece "aÃ±o". Ese engendro tiene nombre: **mojibake**. El arreglo casi nunca es corregir el texto a mano, sino lograr que las dos partes estén de acuerdo en que el texto es UTF-8.

## Una analogía

Una guía telefónica mundial que le da a cada carácter del planeta su propio número. UTF-8 es la forma de anotar esos números en papel: los cortos ocupan un casillero y los largos, varios. Si quien lee supone que todo número entra en un casillero, uno de dos casilleros se convierte en dos números equivocados.

## Para quedarse

- Unicode le da a cada carácter, de la A a la ñ y los emoji, un número único.
- UTF-8 es la forma más común de guardar esos números como bytes.
- Un texto en inglés básico en UTF-8 es idéntico al viejo ASCII.
- Ver "Ã±" en vez de "ñ" significa que el texto se leyó con la codificación equivocada.

## Para seguir leyendo

- [Unicode en Wikipedia](https://es.wikipedia.org/wiki/Unicode)
- [UTF-8 (glosario de MDN)](https://developer.mozilla.org/es/docs/Glossary/UTF-8)
- [Mojibake en Wikipedia](https://es.wikipedia.org/wiki/Mojibake)

## Términos relacionados

- [Emoji](https://tidbit.legios.com.ar/es/emoji/): Dibujitos que en realidad son caracteres de texto, dibujados distinto por cada marca.
- [Regiones y zonas de disponibilidad](https://tidbit.legios.com.ar/es/regions-and-availability-zones/): Dónde vive AWS físicamente: ciudades del mundo, cada una con varios centros de datos.
