Різниця між Url Encode та HTML encode


85

Яка різниця між URL Encode та HTML Encode ?


5
Якщо ви хочете кодувати для використання в URL-адресі, ви використовуєте кодування URL-адреси. Якщо ви хочете кодувати для відображення на HTML-сторінці, ви кодуєте його HTML
Mitch Wheat

4
Кодування URL-адреси буде кодувати символи так, щоб вони були дійсними для URL-адрес. Наприклад , ?стає %3FHTML кодування буде кодувати символи таким чином , вони дійсні для HTML. Напр. <Стає&lt;
Метт Еллен,

Відповіді:


83

Кодування HTML уникає спеціальних символів у рядках, що використовуються в документах HTML, щоб уникнути плутанини з елементами HTML, наприклад, зміни

"<hello>world</hello>" 

до

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

Кодування URL робить подібне для рядкових значень в URL, як зміна

"hello+world = hello world"

до

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

15
Кодування HTML та кодування URL роблять принципово різні речі. Якщо ви кодуєте HTML, наприклад, "hello world" і намагаєтесь додати його до URL-адреси, ви отримаєте недійсну URL-адресу. І те, і інше важливо, і їх слід використовувати в різних ситуаціях.
Ніл

1
Просто довелося пройти і замінити кілька звичаїв HtmlEncode для кодування URL-адрес на UrlEncoding, проблеми з кодуванням пробілів та деяких інших спеціальних символів
PJUK

Обережно, використання HtmlEncode замість UrlEncode може бути проблематичним для URL-адрес, оскільки HtmlEncode розміщує символи "&" у всьому рядку. Залежно від того, чого очікує ваша веб-служба, яка отримує URL-адресу, кілька зайвих символів "&" можуть бути дуже проблематичними. Наприклад, якщо ваша веб-служба очікує, що перед кожним параметром у URL-адресі буде символ "&", але ви використали HtmlEncode, який додав купу зайвих символів "&", швидше за все, ви отримаєте помилку, коли ваша веб-служба намагається інтерпретувати URL-адресу. Мені просто довелося замінити кілька застосувань HtmlEncode на UrlEncode саме з цієї причини.
jdnew18

3
Будь ласка, не слухайте Філла. Я вважаю неможливим повірити, що він використовує рядки запитів і створює сучасні URL-адреси, використовуючи HtmlEncode замість UrlEncode. Сказати, що UrlEncode здебільшого марний - це одне з найбезглуздіших речей, які я бачив за цей час на цьому сайті.
Nard Dog

23

urlEncode замінює спеціальні символи символами, які можуть бути зрозумілі веб-браузерам / веб-серверам з метою адресування ... звідси URL. Наприклад, пробіли замінюються на% 20, '=% 27 тощо ...

Дивіться ці посилання:

HtmlEncode замінює спеціальні символи на символьні рядки, які розпізнає сам механізм HTML для відображення вмісту сторінки - такі речі, як & стає &amp; or < = &lt; > = &lt;цим, заважають механізму HTML інтерпретувати ці символи як частини розмітки HTML і, отже, відображати їх так, ніби вони були струни.

Дивіться це посилання:


Насправді URLEncode замінює пробіли на +, що в деяких ситуаціях може бути проблемою.
NetMage

13

І HTML, і URL-адреси є по суті дуже обмеженими мовами . Як мова вони додають значення певним ключовим словам або операторам. Однак для обох цих мов ключові слова майже завжди є окремими символами. Наприклад

  • HTML:> та <
  • URL: / та:

У використанні кожної мови, хоча ці конструкції можна використовувати таким чином, щоб не забезпечити значення мови. Наприклад, ця публікація містить символ>. Я не хочу, щоб це трактувалось як HTML, а просто як текст.

Тут починають діяти методи кодування та декодування. Ці методи, відповідно, приймуть рядок і перетворять будь-який із символів, які в іншому випадку вважалися б ключовими словами, у екрановану форму, яка не інтерпретується як частина мови.

Наприклад: Передача> у HtmlEncode поверне & gt;


3

HTMLEncode та URLEncode мають справу з недійсними символами в HTML та URL-адресах, або, точніше, символами, які потрібно спеціально записати, щоб правильно інтерпретувати. Наприклад, у HTML символи <і> використовуються для позначення тегів. Таким чином, якщо ви хочете написати математичну формулу, щось на зразок 1 + 1 <2 + 2, '<' зазвичай тлумачиться як початок тегу. HTMLEncoding перетворює цей символ у "& lt;" що є закодованим поданням знака менше, ніж. URLEncoding робить те саме, але для URL-адрес, для яких спеціальні символи різні, хоча є певне перекриття.


1

Я не знаю, якою мовою ви працюєте, але посібник PHP, наприклад, дає хороші пояснення.

URLEкод

Повертає рядок, у якому всі нелітерально-цифрові символи, крім -_. були замінені знаком відсотка (%), за яким слідують дві шістнадцяткові цифри та пробіли, закодовані як знаки плюс (+). Він кодується так само, як кодуються розміщені дані з форми WWW, тобто так само, як і в типі носія application / x-www-form-urlencoded. Це відрізняється від кодування »RFC 1738 (див. Rawurlencode ()) тим, що з історичних причин пробіли кодуються як знаки плюс (+).

Читайте далі

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.