кодировка URL, кодировка формы и mailto: кодировка - PullRequest
2 голосов
/ 05 мая 2011

Я немного запутался в вопросах кодирования, связанных с HTML.Я не ссылаюсь на кодировку в заголовках или кодировку в прологе XML.Это я получаю.Позвольте мне объяснить.

Когда "mailto:" используется вместе с якорем или кнопкой отправки в форме, пробел кодируется как "% 20" и "перевод строки / возврат каретки / новая строка /конец строки "кодируется как% 0A.В то время как когда атрибут enctype используется в форме со значением «application / x-www-form-urlencoded», пробел кодируется как «+», а специальные символы, апострофы, проценты и другие символы преобразуются в их ASCII HEXэквиваленты.Является ли значение application / x-www-form-urlencoded кодировкой URL?Так почему «% 20» для первого и «+» для второго.

"mailto:someone@someplace.com?cc=carbon@copy.com&bcc=blind@carbobcopy.org&subject=This%20is%20the%20subject&body=This%20is%20the%body%0AThis%20is%20the%20second%20paragraph"

В приведенном выше примере пробел в теме кодируется как% 20, а новая строка в теле кодируется как% 0A.

<form enctype="application/x-www-form-urlencoded"></form>

И в указанном выше пробеле будет закодировано "+".Я что-то упустил?

Заранее спасибо.

1 Ответ

1 голос
/ 05 мая 2011

URI (как ваш пример mailto) должны быть закодированы в соответствии с RFC 3986, который указывает, что пробелы должны кодироваться как% 20.

Формат данных FORM, с другой стороны, кодируется как application / x-www-form-urlencoded в соответствии с правилами, определенными спецификацией HTML. (См., Например, раздел 17.13.3.3 спецификации HTML 4.01 .) Это указывает, что пробелы должны переводиться как знаки +.

Таким образом, хотя процентное кодирование одинаково для URI и данных формы, символ пробела обрабатывается по-разному.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...