¿Qué hacer si el resultado de codificación/decodificación de entidades HTML no es correcto al depurar una interfaz?
Cuando el resultado de codificación/decodificación de entidades HTML no es correcto al depurar una interfaz, normalmente no es que la herramienta esté rota, sino que confundiste el tipo de entrada, el nivel de escape o el conjunto de caracteres. Primero confirma si los datos originales son entidades HTML, codificación URL o escape JSON, y luego elige el método de decodificación correspondiente; el resultado normalmente coincidirá.
Cuando en la respuesta de la interfaz aparecen fragmentos como &, ', <, la primera reacción de muchas personas es pegarlos directamente en la herramienta para decodificarlos. Pero si ese contenido ya fue escapado una vez, decodificarlo de nuevo dará un resultado incorrecto. A continuación se explica claramente, siguiendo el orden de diagnóstico, cómo localizar y corregir el problema.
Primero determina qué tipo de codificación son los datos
Las entidades HTML son marcadores de posición en forma de &name; o &#número;, que solo se restauran a caracteres cuando el navegador los renderiza. Son algo de una capa distinta a la codificación URL (%20) y al escape de cadenas JSON (\", \u4e2d). Si juzgas mal el tipo, el resultado de la decodificación naturalmente será incorrecto.
Puedes comprobarlo en este orden:
- Observa la forma de los caracteres: si hay
&...;son entidades HTML; si hay%seguido de dos dígitos hexadecimales es codificación URL; si hay barras invertidas es escape JSON o de lenguaje de programación. - Cuenta las capas de escape: la aparición consecutiva de
&amp;indica que se escapó dos veces y hay que decodificar dos veces para restaurar&. - Confirma el conjunto de caracteres: si la interfaz declara UTF-8 pero en realidad devuelve GBK, tras decodificar aparecerán signos de interrogación o cuadros.
- Comprueba si hay un segundo empaquetado: algunas interfaces meten fragmentos HTML dentro de un campo JSON; primero decodifica el JSON y luego las entidades.
La herramienta de codificación/decodificación de entidades HTML que se ejecuta localmente en el navegador no sube tus datos, por lo que es adecuada para pegar fragmentos de respuesta de la interfaz y hacer pruebas comparativas.
Diferencia entre codificación/decodificación de entidades HTML y escape de caracteres
La diferencia entre codificación/decodificación de entidades HTML y escape de caracteres está en el ámbito de aplicación: la codificación/decodificación de entidades trata los marcadores de posición &...; dentro de documentos HTML, mientras que el escape de caracteres trata la representación de caracteres especiales de una cadena en el lenguaje o en la capa de transporte. Ambos tienen como objetivo evitar ambigüedades, pero están en capas diferentes.
La diferencia entre codificación/decodificación de entidades HTML y escape de caracteres también se refleja en la reversibilidad. La codificación/decodificación de entidades suele ser una correspondencia uno a uno; < se restaura a `