Mcatorce Suite
← Volver al blog

ASCII vs Unicode vs UTF-8: ¿Cuál Es la Diferencia?

Una explicación clara de la relación entre ASCII, Unicode y UTF-8, por qué las letras acentuadas a veces se convierten en símbolos extraños y cómo evitarlo.

Prueba la herramienta: Tabla ASCII

Los tres términos se usan a menudo como si significaran lo mismo, pero describen capas distintas. Entenderlos explica la mayoría de los errores de codificación de texto.

ASCII: un juego de caracteres pequeño

ASCII define 128 caracteres y los numera del 0 al 127. Cubre las letras inglesas, los dígitos, la puntuación y los códigos de control. No tiene letras acentuadas, ni otros alfabetos, ni emojis.

Unicode: un catálogo de caracteres

Unicode es una lista universal que da a cada carácter de cada sistema de escritura un número único llamado punto de código, que se escribe como U+0041 para la letra A. Actualmente cubre bastante más de 100,000 caracteres entre alfabetos, símbolos y emojis. Los primeros 128 puntos de código de Unicode son los mismos que ASCII. Unicode es el catálogo; no dice cómo guardar los números como bytes.

UTF-8: una forma de guardar los números

UTF-8 es una codificación que convierte los puntos de código en bytes, usando de uno a cuatro bytes por carácter. Los caracteres del rango ASCII ocupan un byte y se ven idénticos a ASCII, mientras que las letras acentuadas suelen ocupar dos bytes y otros alfabetos ocupan tres o cuatro. UTF-8 es la codificación dominante en la web porque es compacta para el texto en inglés y compatible con los datos ASCII antiguos.

Por qué el texto a veces se ve roto

Si un archivo se guarda como UTF-8 pero se abre como Latin-1, los dos bytes que forman una letra acentuada se muestran como dos caracteres separados. La letra e con acento agudo, guardada como los bytes C3 y A9, aparece como una A mayúscula con tilde seguida de un signo de copyright. Este efecto se llama mojibake.

Cómo evitar problemas

  • Guarda y sirve el texto como UTF-8 en todas partes.
  • Declara la codificación con una etiqueta meta charset en HTML y en las cabeceras HTTP.
  • Asegúrate de que tu base de datos y la conexión también usen UTF-8, por ejemplo utf8mb4 en MySQL.
  • Inspecciona el texto sospechoso para ver sus puntos de código reales.

Preguntas frecuentes

¿UTF-8 ocupa más que ASCII? Para el texto en inglés ocupa lo mismo. Para otros idiomas ocupa más, pero sigue siendo eficiente.

¿Cuál debo usar en proyectos nuevos? Usa texto Unicode guardado como UTF-8.