Кириллица, mailto и URL-encoded символы
Про использование кириллических символов в URL-ссылках.
Этот материал распространяется на условиях лицензии Creative Commons Attribution/Share-Alike License 3.0 (Unported). Это означает, что вы можете размещать этот контент на своем сайте или создавать на его основе собственный (в том числе и в коммерческих целях), при условии сохранения оригинального лицензионного соглашения. Кроме того, Вы должны отметить автора этой работы, путем размещения HTML ссылки на оригинал работы https://planetcalc.ru/684/. Пожалуйста оставьте без изменения все ссылки на других авторов данной работы или работы, на основе которой создана данная работа (если таковые имеются в спроводительном тексте).
Для тех, кто еще не понял, этот сайт — онлайновый движок для написания калькуляторов, где для расчета используется javascript, который пишет сам пользователь. Однако понятие калькулятор мы трактуем очень вольно, как некую сущность, куда попадают исходные данные, а на выходе получается осмысленный для автора результат :)
Смотри, например, Как из мухи сделать слона.
Вот и сегодня я решил написать калькулятор, довольно специализированный, но тем, кому это надо, в принципе, поможет. Мне было надо.
Речь идет о кодировании кириллических символов для использования в ссылках. Ну например, вы можете написать http://ru.wikipedia.org/wiki/Москва, и при нажатии на ссылку браузер откроет вам соответствующую статью. Однако заметим, что на самом деле браузер обратился по ссылке, напоминающей что-то такое
http://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0, только избавил вас от этих утомительных подробностей.
Эти проценты и буквы и есть URL-encoded форма представления адреса. Впрочем, чего тут распинаться, кому надо и так знает. Изначально ее изобрели для того чтобы передавать безопасно символы, которые имеют значение в контексте URL, чтобы не путать браузер, ну и сервер тоже. Например, / (прямой слэш). Если его надо передать как параметр, а не как часть адреса, то передавать его надо как %2F.
Казалось бы — прекрасно, браузер все делает за нас, в чем, собственно, проблема? А проблема в еще одном виде ссылок, а именно, mailto: Они предназначены не для открытия страницы в браузере, а для открытия почтового клиента по умолчанию. Скажем больше, в них можно передавать параметры письма, такие как «тема» и «тело письма». Вот тут-то и начинается проблема. Если Вы напишете mailto:username@someaddress.com?subject=Привет&body=Как жизнь? то ничего хорошего у Вас не выйдет (если кодировка страницы, как у меня сейчас, UTF-8).
Потому что почтовый клиент это не поймет. Потому что он использует, скорее всего, кодировку Windows-1251 (проверял на Outlook и Outlook Express).
Но зато, если Вы напишите вот так mailto:username@someaddress.com?subject=%CF%F0%E8%E2%E5%F2&body=%CA%E0%EA%20%E6%E8%E7%ED%FC%3F, то все будет очень хорошо. Под «Вы» имеется в виду, конечно, автор веб-страниц.
Ну собственно, это была преамбула, а теперь амбула :)
Ниже калькулятор, который на введенный текст выдает его URL-encoded эквивалент.
Комментарии