Differenza tra Url Encode e HTML encode


86

Qual è la differenza tra una codifica URL e una codifica HTML ?


5
Se desideri codificare per l'utilizzo in un URL, utilizza la codifica URL. Se vuoi codificare per la visualizzazione su una pagina HTML, devi codificarla HTML
Mitch Wheat

4
La codifica URL codificherà i caratteri in modo che siano validi per gli URL. Ad esempio, ?diventa %3Fcodifica HTML codificherà i caratteri in modo che siano validi per HTML. Ad esempio, <diventa&lt;
Matt Ellen

Risposte:


85

La codifica HTML evita i caratteri speciali nelle stringhe utilizzate nei documenti HTML per evitare confusione con elementi HTML come la modifica

"<hello>world</hello>" 

per

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

La codifica URL fa una cosa simile per i valori di stringa in un URL come la modifica

"hello+world = hello world"

per

"hello%2Bworld+%3D+hello+world"

15
La codifica HTML e la codifica URL fanno cose fondamentalmente diverse. Se codifichi HTML, ad esempio, "ciao mondo" e provi ad aggiungerlo a un URL, otterrai un URL non valido. Entrambi sono importanti e dovrebbero essere usati per situazioni diverse.
Neil

1
Dovevo solo passare attraverso e sostituire diversi utilizzi HtmlEncode per la codifica degli URL con UrlEncoding, problemi con la codifica degli spazi e alcuni altri caratteri speciali
PJUK

Attenzione, l'utilizzo di HtmlEncode al posto di UrlEncode può essere problematico per gli URL poiché HtmlEncode inserisce i caratteri "&" in tutta la stringa. A seconda di ciò che il tuo servizio web che riceve l'URL si aspetta, alcuni caratteri "&" aggiuntivi possono essere molto problematici. Ad esempio, se il tuo servizio web si aspetta che ogni parametro in un URL sia preceduto da un carattere "&", ma hai utilizzato HtmlEncode che ha aggiunto un gruppo di caratteri "&" extra, probabilmente riceverai un errore quando il tuo servizio web tenta di interpretare l'URL. Proprio per questo motivo ho dovuto sostituire diversi usi di HtmlEncode con UrlEncode.
jdnew18

3
Per favore, non ascoltare Phill. Trovo impossibile credere che stia usando stringhe di query e creando URL moderni usando HtmlEncode invece di UrlEncode. Dire che UrlEncode è per lo più inutile è una delle cose più assurde che ho visto da un po 'di tempo su questo sito.
Nard Dog

23

urlEncode sostituisce i caratteri speciali con caratteri che possono essere compresi dai browser Web / server Web allo scopo di indirizzare ... quindi URL. Ad esempio, gli spazi vengono sostituiti con% 20, '=% 27 ecc ...

Vedi questi riferimenti:

HtmlEncode sostituisce i caratteri speciali con stringhe di caratteri che sono riconosciute dal motore HTML stesso per rendere il contenuto della pagina - cose come & diventa &amp; or < = &lt; > = &lt;questo impedisce al motore HTML di interpretare questi caratteri come parti del markup HTML e quindi di renderli come se lo fossero stringhe.

Vedi questo riferimento:


In realtà URLEncode sostituisce gli spazi con +, il che può essere un problema in alcune situazioni.
NetMage

13

Sia HTML che URL sono essenzialmente linguaggi molto limitati . Come lingua aggiungono significato a parole chiave o operatori specifici. Per entrambe queste lingue, tuttavia, le parole chiave sono quasi sempre caratteri singoli. Per esempio

  • HTML:> e <
  • URL: / e:

Nell'uso di ciascuna lingua, tuttavia, è possibile utilizzare questi costrutti in un modo che non garantisce il significato della lingua. Ad esempio, questo post contiene un carattere>. Non voglio che venga interpretato come HTML, solo testo.

È qui che entrano in gioco i metodi Encode e Decode. Questi metodi prenderanno rispettivamente una stringa e convertiranno uno qualsiasi dei caratteri che altrimenti verrebbero trattati come parole chiave in una forma con escape che non verrà interpretata come parte del linguaggio.

Ad esempio: il passaggio di> a HtmlEncode restituirà & gt;


3

HTMLEncode e URLEncode si occupano di caratteri non validi in HTML e URL o, più precisamente, caratteri che devono essere scritti appositamente per essere interpretati correttamente. Ad esempio, in HTML i caratteri <e> vengono utilizzati per indicare i tag. Quindi, se volessi scrivere una formula matematica, qualcosa come 1 + 1 <2 + 2, il "<" verrebbe normalmente interpretato come l'inizio di un tag. HTMLEncoding trasforma questo carattere in "& lt;" che è la rappresentazione codificata del segno minore di. URLEncoding fa lo stesso, ma per gli URL, per i quali i caratteri speciali sono diversi, sebbene ci siano alcune sovrapposizioni.


1

Non so in quale lingua stai lavorando, ma il manuale PHP, ad esempio, fornisce buone spiegazioni.

URLEncode

Restituisce una stringa in cui tutti i caratteri non alfanumerici tranne -_. sono stati sostituiti con un segno di percentuale (%) seguito da due cifre esadecimali e spazi codificati come segni più (+). È codificato nello stesso modo in cui vengono codificati i dati inviati da un modulo WWW, ovvero nello stesso modo del tipo di supporto application / x-www-form-urlencoded. Questo differisce dalla »codifica RFC 1738 (vedere rawurlencode ()) in quanto per ragioni storiche, gli spazi sono codificati come segni più (+).

Continuare a leggere

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.