Resumen

  • Los valores 007F quedaron reservados a caracteres ASCII; el primer octeto anunció la longitud, los siguientes empezaron por 10, y FE/FF quedaron fuera de la gramática.
  • El propio RFC negó validez cultural al orden numérico conservado y no examinó seguridad. charset=UTF-8 declara un esquema; no demuestra bytes válidos, normalización, representación, identidad o despliegue.

Un sistema de ficheros antiguo podía no saber qué era un carácter chino, pero sí qué hacía una barra. Un formateador podía desconocer el cirílico, pero interpretar % como instrucción. Si esos valores aparecían en medio de un carácter multibyte, la ampliación del repertorio amenazaba la sintaxis instalada.

RFC 2044 hizo que ese riesgo concreto pudiera inspeccionarse localmente. Unicode 1.1 e ISO/IEC 10646 ofrecían UCS-2 y UCS-4, pero muchas aplicaciones no podían cambiar sin más a unidades de 16 o 32 bits. UTF-8 conservó el puente con el software transparente a valores altos.

La secuencia llevaba su propio mapa

ASCII se codifica con 0xxxxxxx y mantiene el octeto habitual. En una secuencia larga, los bits 1 iniciales indican su longitud total, después aparece 0; cada continuación empieza por 10. Así, un lector que entra a mitad del flujo puede saltar continuaciones y recuperar el siguiente límite.

Los valores FE y FF no corresponden a ninguna forma permitida. Es una propiedad negativa útil, pero no valida por sí sola los demás octetos. Deben comprobarse longitud, continuaciones y valor reconstruido.

El ejemplo “A≢Α.” se serializa como 41 E2 89 A2 CE 91 2E. Los extremos siguen siendo A y punto ASCII. El decodificador recupera puntos de código; no recupera de esos bytes una lengua, una fuente, intención, equivalencia canónica o legitimidad como identificador.

El orden de código no es orden cultural

RFC 2044 señala que el orden lexicográfico de UCS-4 se conserva. Eso permite índices binarios reproducibles. Pero inmediatamente dice que la propiedad interesa poco porque dicho orden no es culturalmente válido en ninguna representación.

Ordenar nombres exige locale, reglas de acentos, mayúsculas, contracciones y escritura. Un orden puede ser determinista para la máquina y equivocado para el lector. La codificación nunca recibió autoridad para decidir un alfabeto universal.

El rótulo MIME no examinaba el contenido

El memo propuso UTF-8 como valor charset de MIME. MIME aportaba el campo donde declarar el juego de caracteres; el trabajo previo sobre Unicode y MIME separaba repertorio, serialización y codificación de transferencia.

El rótulo escoge el decodificador que debe probarse. No detecta una secuencia cortada, una forma ilegal o bytes alterados por un relé, ni autentica a quien lo escribió. El registro IANA conserva UTF-8, MIBenum 106 y csUTF8, hoy referidos a RFC 3629. Esa fila identifica el nombre; no valida un documento.

La historia de seis octetos terminó en una regla de cuatro

RFC 2044 fue Informational y declaró que no especificaba un estándar de Internet. El Datatracker lo clasifica como Legacy. RFC 2279 lo sustituyó en Standards Track, y RFC 3629 sustituyó después a RFC 2279.

La versión de 1996 permitía secuencias de uno a seis octetos. RFC 3629 limita UTF-8 a U+10FFFF, de uno a cuatro octetos, prohíbe sustitutos y formas demasiado largas y exige rechazar secuencias inválidas. Un patrón de cinco octetos puede describir el documento viejo, no UTF-8 actual. Que la búsqueda de erratas no muestre una corrección para RFC 2044 no revoca su obsolescencia.

La seguridad estaba fuera del documento

RFC 2044 dice expresamente que no discute cuestiones de seguridad. RFC 3629 documentó después ataques mediante secuencias ilegales, codificaciones sobredimensionadas, tamaños de búfer y cadenas distintas que parecen iguales. RFC 5198 trató la normalización NFC como otra capa.

Por eso preservar ASCII no certifica un parser seguro; recuperar límites no certifica validez moderna; UTF-8 válido no significa texto normalizado; y puntos de código válidos no prueban identidad, glifos fieles o comprensión.

La idea de especificación inicial mínima de Heng Lu ayuda a conservar la proporción: compartir reglas deterministas necesarias, dejar las decisiones de lengua y aplicación fuera. Running-Code Primacy exige implementación y observación para demostrar adopción. Reality Layers impide promover un documento o una etiqueta a un resultado que no ejecuta.

La lección histórica de RFC 2044 es así de precisa: una buena codificación preservó la sintaxis anterior sin reclamar el significado posterior.

Fuentes