Diferencia entre codificación Url y codificación HTML

85

¿Cuál es la diferencia entre una codificación URL y una codificación HTML ?

Quintin Par
fuente
5
Si desea codificar para su uso en una URL, utilice la codificación de URL. Si desea codificar para mostrar en una página HTML, codifíquelo en HTML
Mitch Wheat
4
La codificación de URL codificará los caracteres para que sean válidos para las URL. Por ejemplo, la codificación HTML se ?convierte en %3Fcodificará los caracteres para que sean válidos para HTML. Eg se <convierte en&lt;
Matt Ellen

Respuestas:

83

La codificación HTML escapa de los caracteres especiales en cadenas utilizadas en documentos HTML para evitar confusión con elementos HTML como cambiar

"<hello>world</hello>" 

a

"&lt;hello&gt;world&lt;/hello&gt;"

La codificación de URL hace algo similar para los valores de cadena en una URL como cambiar

"hello+world = hello world"

a

"hello%2Bworld+%3D+hello+world"
Mehrdad Afshari
fuente
15
La codificación HTML y la codificación de URL hacen cosas fundamentalmente diferentes. Si codifica HTML, por ejemplo, 'hola mundo' e intenta agregarlo a una URL, obtendrá una URL no válida. Ambos son importantes y deben usarse para diferentes situaciones.
Neil
1
Solo tuve que revisar y reemplazar varios usos de HtmlEncode para codificar URL con UrlEncoding, problemas con la codificación de espacios y algunos otros caracteres especiales
PJUK
Tenga cuidado, el uso de HtmlEncode en lugar de UrlEncode puede ser problemático para las URL, ya que HtmlEncode coloca caracteres "&" en toda la cadena. Dependiendo de lo que espere su servicio web que recibe la URL, algunos caracteres "&" adicionales pueden ser muy problemáticos. Por ejemplo, si su servicio web espera que cada parámetro en una URL esté precedido por un carácter "&", pero usó HtmlEncode, que agregó un montón de caracteres "&" adicionales, es probable que obtenga un error cuando su servicio web intenta interpretar la URL. Solo tuve que reemplazar varios usos de HtmlEncode con UrlEncode por esta misma razón.
jdnew18
3
Por favor, no escuches a Phill. Me resulta imposible creer que esté usando cadenas de consulta y creando URL modernas usando HtmlEncode en lugar de UrlEncode. Decir que UrlEncode es casi inútil es una de las cosas más absurdas que he visto en este sitio en mucho tiempo.
Nard Dog
23

urlEncode reemplaza los caracteres especiales con caracteres que los navegadores web / servidores web pueden entender con el fin de direccionar ... Por ejemplo, los espacios se reemplazan con% 20, '=% 27, etc.

Vea estas referencias:

HtmlEncode reemplaza los caracteres especiales con cadenas de caracteres que son reconocidas por el propio motor HTML para representar el contenido de la página; cosas como & se convierte en &amp; or < = &lt; > = &lt;esto evita que el motor HTML interprete estos caracteres como partes del marcado HTML y, por lo tanto, los renderice como si fueran instrumentos de cuerda.

Vea esta referencia:

BenAlabaster
fuente
En realidad, URLEncode reemplaza los espacios con +, lo que puede ser un problema en algunas situaciones.
NetMage
13

Tanto HTML como URL son esencialmente lenguajes muy restringidos . Como idioma, agregan significado a palabras clave u operadores específicos. Sin embargo, para ambos idiomas, las palabras clave son casi siempre caracteres individuales. Por ejemplo

  • HTML:> y <
  • URL: / y:

Sin embargo, en el uso de cada idioma es posible usar estos constructos de una manera que no asegure el significado del idioma. Por ejemplo, esta publicación contiene un carácter>. No quiero que se interprete como HTML, solo texto.

Aquí es donde entran en juego los métodos Codificar y Decodificar. Estos métodos tomarán, respectivamente, una cadena y convertirán cualquiera de los caracteres que de otro modo se tratarían como palabras clave en una forma de escape que no se interpretará como parte del idioma.

Por ejemplo: Pasar> a HtmlEncode devolverá & gt;

JaredPar
fuente
3

HTMLEncode y URLEncode tratan con caracteres no válidos en HTML y URL, o más exactamente, caracteres que deben escribirse especialmente para ser interpretados correctamente. Por ejemplo, en HTML, los caracteres <y> se utilizan para indicar etiquetas. Por lo tanto, si quisiera escribir una fórmula matemática, algo como 1 + 1 <2 + 2, el '<' normalmente se interpretaría como el comienzo de una etiqueta. HTMLEncoding convierte este carácter en "& lt;" que es la representación codificada del signo menor que. URLEncoding hace lo mismo, pero para las URL, para las cuales los caracteres especiales son diferentes, aunque existe cierta superposición.

Michael Bray
fuente
1

No sé en qué idioma está trabajando, pero el manual de PHP, por ejemplo, proporciona buenas explicaciones.

URLEncode

Devuelve una cadena en la que todos los caracteres no alfanuméricos excepto -_. han sido reemplazados con un signo de porcentaje (%) seguido de dos dígitos hexadecimales y espacios codificados como signos más (+). Está codificado de la misma manera que los datos publicados desde un formulario WWW, es decir, de la misma manera que en el tipo de medio application / x-www-form-urlencoded. Esto difiere de la codificación »RFC 1738 (consulte rawurlencode ()) en que, por razones históricas, los espacios se codifican como signos más (+).

Sigue leyendo

Pekka
fuente