Кириллица, mailto и URL-encoded символы

Про использование кириллических символов в URL-ссылках.

Для тех, кто еще не понял, этот сайт — онлайновый движок для написания калькуляторов, где для расчета используется 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 эквивалент.

PLANETCALC, Кириллица в URL-encoded

Кириллица в URL-encoded

URL-encoded
 

Ссылка скопирована в буфер обмена
PLANETCALC, Кириллица, mailto и URL-encoded символы

Комментарии