Codificación de porcentaje de URL y caracteres de símbolo

1. Codificación porcentual

La codificación porcentual es un mecanismo de codificación con codificación de caracteres de 8 bits. Estas codificaciones tienen significados específicos en el contexto de las URL. A veces se le llama codificación de URL. El código está compuesto por letras de reemplazo en inglés: "%" seguido de la representación hexadecimal ASCII del carácter de reemplazo.

Los caracteres especiales que deben codificarse son:

Caracteres especiales Codificación porcentual
: % 3A
/ % 2F
? % 3F
@ % 40
PS % 24
Y % 26
= % 3D
% % 25

Para obtener más referencia: https://developer.mozilla.org/zh-CN/docs/Glossary/percent-encoding

2. Entidades de carácter

Si queremos mostrar los caracteres reservados en HTML correctamente, debemos reemplazarlos con caracteres en el código fuente HTML. Entidades de carácter útiles en HTML:

Mostrar resultados descripción Nombre de la entidad Número de entidad
Espacio    
< Menos que signo &lt; &#60;
> Mas grande que &gt; &#62;
Y Y firmar &amp; &#38;
" comillas &quot; &#34;
' apóstrofe &apos; (IE no es compatible) &#39;
¥ Yuan (yenes) &yen; &#165;
© Derechos de autor &copy; &#169;
® Marca comercial &reg; &#174;
marca comercial &trade; &#8482;
× Signo de multiplicación &times; &#215;
÷ Signo de división &divide; &#247;

Para más referencia: https://www.w3school.com.cn/tags/html_ref_entities.html

3. La entidad de carácter aparece en la URL.

A partir de los caracteres enumerados anteriormente, podemos ver que en realidad hay muchos caracteres especiales que tienen tanto codificación porcentual como entidades de caracteres correspondientes. Entonces consideremos el siguiente escenario.

Hay un enlace URL en el documento fuente HTML y hay un carácter "&" en la URL, entonces, ¿cómo codificar correctamente el carácter "&" como% 26 o &?

  • Si el enlace URL es solo para representarlo en la página, entonces se puede considerar como contenido HTML puro, por lo que el contenido del enlace debe reemplazarse de acuerdo con la regla de caracteres de la entidad;
  • Si la conexión URL se coloca en la etiqueta <a> para la redirección, para garantizar que la dirección URL se pueda analizar correctamente, el contenido debe codificarse de acuerdo con el formato de codificación porcentual;

Por ejemplo, si usamos el siguiente código para procesar archivos html:

String htmlContext = "<body>http://localhost/path?age=123&name=ddd</body>" ;
String html = org.apache.commons.lang.StringEscapeUtils.escapeHtml(htmlContext) ;

Entonces el contenido html de salida final es

&lt;body&gt;http://localhost/path?age=123&amp;name=ddd&lt;/body&gt;

Se puede ver que el carácter "&" en la URL &amp;se reemplaza por " ", pero probablemente esto no sea lo que queremos. Lo que queremos es codificar el porcentaje de "&" en "% 26"

Si usamos

String html = java.net.URLEncoder.encode(htmlContext,"UTF-8")

Entonces el contenido html de salida final es

%3Cbody%3Ehttp%3A%2F%2Flocalhost%2Fpath%3Fage%3D123%26name%3Dddd%3C%2Fbody%3E

Por supuesto, el enfoque correcto debería ser insertar la URL del hipervínculo en el documento HTML después de la codificación porcentual y luego reemplazar la entidad de carácter del documento HTML

Supongo que te gusta

Origin blog.51cto.com/dengshuangfu/2675342
Recomendado
Clasificación