2009-11-28 14 views
65

Qual è la differenza tra uno URL Encode e uno HTML Encode?Differenza tra codifica Url e codifica HTML

+2

Codifica URL codificherà i caratteri in modo che siano validi per gli URL. Per esempio. '?' diventa '% 3F' La codifica HTML codificherà i caratteri in modo che siano validi per HTML. Per esempio. '<' diventa '<' –

+2

Se si desidera codificare per l'uso in un URL, si utilizza la codifica dell'URL. Se si desidera codificare per la visualizzazione su una pagina HTML, l'HTML lo codifica –

risposta

65

HTML Encoding sfugge i caratteri speciali nelle stringhe utilizzate nei documenti HTML per evitare confusione con gli elementi HTML come cambiare

"<hello>world</hello>" 

a

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

codifica URL fa un simile cosa per valori stringa in un URL come cambiare

"hello+world = hello world" 

a

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

Trovo in pratica che HtmlEncode sia molto più completo per entrambi gli scenari di utilizzo. Come sottolinea @Mehrdad, URLEncode inserisce più simboli, ma questo può causare problemi se si utilizzano urlrewrites ad esempio. Quindi usare HtmlEncode anche per url è molto meno problematico. Non ho mai riscontrato un problema utilizzando HtmlEncode per gli URL, ma lo sono quando utilizzo UrlEncode per gli URL. A mio avviso, UrlEncode è per lo più inutile. –

+8

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

+0

Bastava passare e sostituire diversi usi di HtmlEncode per la codifica di url con UrlEncoding, problemi con la codifica di spazi e altri caratteri speciali – PJUK

3

HTMLEncode e URLEncode gestiscono 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. Pertanto, se si desidera scrivere una formula matematica, ad esempio 1 + 1 < 2 + 2, lo '<' viene normalmente interpretato come l'inizio di un tag. HTMLEncoding trasforma questo personaggio 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, anche se c'è qualche sovrapposizione.

17

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

vedere questi riferimenti:

HtmlEncode sostituisce i caratteri speciali con stringhe di caratteri che sono riconosciuti dal motore HTML stesso per il rendering del contenuto della pagina - cose come & diventano &amp; or < = &lt; > = &lt; ciò impedisce al motore HTML di interpretare questi caratteri come parti del codice HTML e quindi renderli come se fossero stringhe.

Vedi questo riferimento:

+0

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

12

Sia HTML e gli URL sono essenzialmente molto vincolati lingue. Come lingua aggiungono significato a parole chiave o operatori specifici. Tuttavia, per entrambe queste lingue, le parole chiave sono quasi sempre caratteri singoli. Per esempio

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

Nell'uso di ogni lingua anche se è possibile utilizzare questi costrutti in un modo che non assicura il significato della lingua Ad esempio questo post contiene un carattere >. Non voglio che sia interpretato come HTML, solo testo.

È qui che entrano in gioco i metodi di codifica e decodifica. Questi metodi prenderanno rispettivamente una stringa e convertiranno tutti i caratteri che sarebbero altrimenti trattati come parole chiave in un modulo con escape che non sarà interpretato come parte della lingua.

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

1

Non so in quale lingua si lavori, ma il PHP manual per esempio fornisce buone spiegazioni.

URLEncode

Restituisce una stringa in cui tutti caratteri non alfanumerici tranne -_. sono stati sostituiti con un segno percentuale (%) seguito da due cifre esadecimali e da spazi codificati come segni più (+). Lo standard è codificato nello stesso modo in cui il dati inviati da un modulo WWW è codificato , vale a dire nel 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 (+).

Read on