Codificación de caracteres
Una codificación de caracteres define cómo se representan caracteres o puntos de código mediante secuencias de bytes y cómo se recuperan.
Definición
Una codificación de caracteres determina cómo las unidades de texto se convierten en números o bytes para almacenarse y transmitirse, y cómo vuelven a ser texto. Emisor y receptor deben usar la misma codificación.
ASCII, UTF-8, UTF-16 y las páginas antiguas son codificaciones o esquemas. Unicode define repertorio y puntos; UTF-8 y UTF-16, su representación concreta.
Cómo funciona
El codificador asigna secuencias válidas y el decodificador aplica las reglas inversas. En UTF-8, A es 41 y € es E2 82 AC. Las codificaciones de longitud variable usan distinto número de bytes.
El charset HTTP, la declaración del archivo o el protocolo indican qué decodificador usar. Sin contexto, los mismos bytes pueden producir textos distintos.
Ejemplo práctico
Decodificados como UTF-8, los bytes E2 82 AC producen €. Con una codificación de un byte ajena generan otros caracteres; esta corrupción visible se denomina mojibake.
Convertir exige decodificar bien el origen y codificar los caracteres en el destino. Cambiar solo la etiqueta no transforma los bytes.
Errores frecuentes
Un decodificador puede rechazar secuencias inválidas o sustituirlas por U+FFFD. Si el destino no representa un carácter, puede haber error, sustitución o pérdida.
Marca de orden de bytes, endianness, normalización Unicode y finales de línea son asuntos relacionados pero distintos. Codificar caracteres no es cifrar.
No. Unicode asigna puntos y propiedades; UTF-8 codifica esos puntos como bytes.
Los bytes pueden haberse decodificado mal o los caracteres se sustituyeron porque el destino no podía representarlos.
No. Algunos bytes encajan en varias codificaciones, sobre todo texto ASCII corto. Hacen falta metadatos, BOM o contexto.