2012-01-31 7 views
10

http://www.w3schools.com/tags/ref_urlencode.aspПочему URL кодирования, или какие символы для кодирования

Поскольку URL-адреса часто содержат символы вне набора ASCII, то URL имеет быть преобразованы в допустимом формате ASCII.

Но оба пространства, /,% являются частью набора символов ASCII, так зачем их кодировать в первую очередь? Какие символы должны быть закодированы?

+0

Символы UTF-8, например, или любой символ из другого набора символов. ASCII - это всего лишь малейший набор символов. – Halcyon

+0

Я не уверен, но я думаю, что каждый символ должен быть закодирован, который может иметь другое значение (например, & и пробел). Не используйте w3schools.com, он не имеет ничего общего с w3c и довольно часто ошибочен. –

ответ

5

Как отмечено, пробелы не указаны в URL-адресах. Большинство браузеров orlencode их автоматически. Однако ...

На странице, на которую вы ссылаетесь, есть пример с использованием слова «Günter» в разделе «Попробуйте меня». Если слово «Günter» было отправлено как параметр querystring, это не сработало. поскольку «ü» не находится в стандартном наборе символов ASCII.

Он предназначен для использования, когда есть потенциально не-ASCII-символы. Примером может быть использование данных из базы данных для создания гиперссылки. Предположим, что код создает ссылку на страницу профиля пользователя. Unencoded, шахта будет:

<a href="profile/?username=David Stratton">Your profile</a> 

в то время как Гюнтер был бы

<a href="profile/?username=Günter">Your profile</a> 

Mine, большинство браузеров может справиться. Гюнтер, вероятно, нет.

кодировкой, они стали бы

<a href="profile/?username=David%20Stratton">Your profile</a> 

и

<a href="profile/?username=G%FCnter">Your profile</a> 

, которые являются допустимыми URL-адреса.

(Пожалуйста, простите тот факт, что наиболее хорошо разработанные системы не будут передавать имя пользователя в качестве параметра, как это. Это был просто пример, чтобы уточнить понятие.)

+0

Просьба не просто сказать * «это не сработает» *. Объясните, по крайней мере, то, что он делает, с другой стороны, если что-то пойдет не так. – yckart

1

Некоторые символы, такие как пробелы, должны быть экранированы для обеспечения правильных URL-адресов. Когда место, где это обязательно придумает много, - это генерация параметров GET.

6

Символы в URL должен быть закодирован потому что некоторые символы имеют особое значение в соответствии с URL specification, некоторые символы не допускаются, а некоторые символы не представляются во всех наборах символов.

См. this intro для получения дополнительной информации.

Что касается примеров символов, которые вы даете '/', зарезервирован для использования в качестве разделителя компонентов в URL-адресах, а '%' используется как escape-символ.

+0

+1 для спецификации/ссылки :-) – The111

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