Informática
Códigos Unicode, UTF-8 y UTF-16 de un texto
Pega un texto y verás cada carácter con su code point, sus bytes en UTF-8 y UTF-16 y su código HTML. O escribe los códigos, como U+1F600 o é, y obtén los caracteres.
Caracteres, code points y bytes
Unicode asigna a cada carácter de cada escritura un número, el code point, escrito como U+ seguido de cifras hexadecimales: la A es U+0041, la ñ U+00F1, el euro U+20AC, la cara sonriente U+1F600. Hay más de un millón de posiciones, unas 150.000 ya en uso.
Después el code point se convierte en bytes. UTF-8, la codificación de la web, usa de uno a cuatro bytes: uno para ASCII, dos para letras acentuadas, tres para casi todo lo demás y cuatro para emoji y símbolos raros. UTF-16, usada por JavaScript, Java y Windows, usa dos bytes o un par de sustitutos de cuatro.
Por eso la longitud de una cadena depende de lo que se cuente: "😀".length vale 2 en JavaScript, el carácter ocupa 4 bytes en UTF-8 y a la vista es uno solo. Y una letra con tilde puede ser un único code point o una letra más un acento combinante: parecen iguales pero no lo son.
Errores frecuentes
- Cortar una cadena UTF-8 en un número fijo de bytes: se puede partir un carácter por la mitad.
- Contar caracteres con .length en JavaScript: los emoji y los caracteres fuera del plano básico valen 2.
- Comparar textos sin normalizarlos: una é precompuesta y una e con acento combinante son distintas para el ordenador.
Preguntas frecuentes
¿Qué diferencia hay entre Unicode y UTF-8?
Unicode es la lista de caracteres con su número; UTF-8 es una de las formas de escribir esos números en bytes. El mismo texto Unicode puede guardarse en UTF-8, UTF-16 o UTF-32.
¿Por qué veo caracteres raros como ñ en lugar de ñ?
Porque un texto en UTF-8 se está leyendo como Latin-1: los dos bytes de la ñ, C3 B1, se convierten en dos caracteres separados. Basta con declarar la codificación correcta.
¿Cómo escribo un carácter Unicode en HTML?
Con una entidad numérica: ñ en decimal o ñ en hexadecimal. Si la página está en UTF-8, también puedes escribir el carácter directamente.
Cómo funciona este cálculo
UTF-8: hasta U+007F un byte 0xxxxxxx; hasta U+07FF dos bytes 110xxxxx 10xxxxxx; hasta U+FFFF tres bytes 1110xxxx 10xxxxxx 10xxxxxx; más allá, cuatro bytes 11110xxx y tres de continuación. UTF-16: hasta U+FFFF una unidad de 16 bits; más allá, se resta 0x10000 y los 20 bits se reparten en dos sustitutos, 0xD800 + los 10 bits altos y 0xDC00 + los 10 bajos.
Cálculos relacionados
Coma flotante IEEE 754
Cómo se guarda un decimal como float de 32 o 64 bits: signo, exponente, mantisa y error.
Conversor Base64
De texto, entero, hexadecimal o binario a Base64 y viceversa, con los grupos de 6 bits explicados.
Unidades de almacenamiento y descarga
De bytes a gigabytes y gibibytes, y cuánto tarda en descargarse un archivo a una velocidad dada.
Conversor de colores
De HEX a RGB, HSL, HSV y CMYK y viceversa, con el contraste WCAG de texto blanco y negro.