2009-11-28 2 views
65

В чем разница между URL Encode и HTML Encode?Разница между Url Encode и HTML-кодом

+2

URL-кодировка кодирует символы так, чтобы они были действительны для URL-адресов. Например. '?' становится '% 3F' HTML encode будет кодировать символы, чтобы они были действительны для HTML. Например. '<' становится '<' –

+2

Если вы хотите кодировать для использования в URL-адресе, вы используете кодировку URL. Если вы хотите кодировать для отображения на HTML-странице, вы кодируете HTML-код –

ответ

65

HTML Кодирование экранирует специальные символы в строках, используемых в HTML-документах для предотвращения путаницы с HTML-элементов, как меняется

"<hello>world</hello>" 

в

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

Кодировка URL делает подобный вещь для строковых значений в URL-адресе, таком как изменение

"hello+world = hello world" 

в

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

Я нахожу на практике, что HtmlEncode гораздо более всеобъемлющий для обоих сценариев использования. Как указывает @Mehrdad, URLEncode помещает символы плюс, но это может вызвать проблемы, если вы используете, например, urlrewrites. Таким образом, использование HtmlEncode даже для url намного менее проблематично. Я никогда не обнаружил проблему с использованием HtmlEncode для URL-адресов, но я использую UrlEncode для URL-адресов. На мой взгляд, UrlEncode в основном бесполезен. –

+8

HTML-кодирование и кодирование URL-адресов делают принципиально разные вещи. Если вы кодируете HTML, например, «hello world» и пытаетесь добавить его к URL-адресу, вы получите неверный URL-адрес. Оба они важны и должны использоваться для разных ситуаций. – Neil

+0

Просто нужно было пройти и заменить несколько применений HtmlEncode для кодирования URL-адресов с помощью UrlEncoding, проблем с кодированием пробелов и некоторых других специальных символов – PJUK

3

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

17

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

Смотрите эти ссылки:

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

Смотрите эту ссылку:

+0

На самом деле URLEncode заменяет пробелы с +, что может быть проблемой в некоторых ситуациях. – NetMage

12

Оба HTML и URL, по существу, очень ограничены языки. В качестве языка они добавляют значение определенным ключевым словам или операторам. Однако для обоих этих языков ключевые слова почти всегда являются одиночными. Например

  • HTML: > и <
  • URL:/и:

При использовании каждого языка хотя можно использовать эти конструкции таким образом, что не обеспечивает значение языка. Например, этот пост содержит символ >. Я не хочу, чтобы это интерпретировалось как HTML, просто текст.

Здесь используются методы кодирования и декодирования. Эти методы соответственно берут строку и преобразуют любой из символов, которые иначе считались бы ключевыми словами в экранированную форму, которая не будет интерпретироваться как часть языка.

Например, если: > в HtmlEncode вернётся & gt;

1

Я не знаю, на каком языке вы работаете, но, например, PHP manual дает хорошие объяснения.

URLEncode

Возвращает строку, в которой все не буквенно-цифровые символы, кроме -_. были заменены на знак процента (%) , за которым следуют две шестнадцатеричные цифры и пробелы, закодированные как знаки плюс (+). Он кодируется так же, как и данные , полученные из формы WWW: , то есть так же, как в application/x-www-form-urlencoded тип носителя. Это отличается от « RFC 1738» (см. Rawurlencode()) , поскольку по историческим причинам пробелы кодируются как знаки плюс (+).

Read on

Смежные вопросы