Кодировка url

125 views
Skip to first unread message

WWW

unread,
Apr 23, 2018, 11:14:53 AM4/23/18
to Erlang по-русски
Всем привет! Я русские буквы передаю в гет запросе из браузера на эрланг, передаю "а", на сервере эрланг получаю "%E0". Браузер кодирует. Подскажите как на эрланге кодировать и раскодировать.

Andrew N Golovkov

unread,
Apr 23, 2018, 11:16:16 AM4/23/18
to erlang-...@googlegroups.com

23 апреля 2018 г., 18:14 пользователь WWW <wad...@yandex.ru> написал:
Всем привет! Я русские буквы передаю в гет запросе из браузера на эрланг, передаю "а", на сервере эрланг получаю "%E0". Браузер кодирует. Подскажите как на эрланге кодировать и раскодировать.

--
Вы получили это сообщение, поскольку подписаны на группу "Erlang по-русски".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russian+unsubscribe@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-russian@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.

WWW

unread,
Apr 28, 2018, 1:06:58 PM4/28/18
to Erlang по-русски
Спасибо, но не совсем работает: http_uri:decode("%E0").   ->> "à"
Должна быть русская буква "а", а имеем  "à"
Запускал в стандартной командной строке(терминале) эрланга. К тому же в самой командной строке эта буква после декодирования отображается типа как иероглиф, если скопировать иероглиф к примеру в ответ на этом форуме, то этот иероглиф приобретает вид:  "à"

Vladimir Gordeev

unread,
Apr 28, 2018, 2:58:51 PM4/28/18
to erlang-...@googlegroups.com
 передаю "а", на сервере эрланг получаю "%E0". 

А в моём браузере русская "а" превращается в %D0%B0. Видимо текст в урле не кодируется как utf-8, да?

Правда попробовал, тоже не увидел отчего так:

  io:format("~s~n", [http_uri:decode(<<"q=%D0%B0">>)]).
  q=а



--

Michael Uvarov

unread,
Apr 28, 2018, 5:30:27 PM4/28/18
to erlang-...@googlegroups.com
Io:format ts, не просто s.
Весь сайт должен быть в ютф 8.
В ковбое тоже есть функции декодирования, скорее всего в cowlib.

On Sat, 28 Apr 2018, 20:58 Vladimir Gordeev, <gordeev.v...@gmail.com> wrote:
 передаю "а", на сервере эрланг получаю "%E0". 

А в моём браузере русская "а" превращается в %D0%B0. Видимо текст в урле не кодируется как utf-8, да?

Правда попробовал, тоже не увидел отчего так:

  io:format("~s~n", [http_uri:decode(<<"q=%D0%B0">>)]).
  q=а


2018-04-28 20:06 GMT+03:00 WWW <wad...@yandex.ru>:
Спасибо, но не совсем работает: http_uri:decode("%E0").   ->> "à"
Должна быть русская буква "а", а имеем  "à"
Запускал в стандартной командной строке(терминале) эрланга. К тому же в самой командной строке эта буква после декодирования отображается типа как иероглиф, если скопировать иероглиф к примеру в ответ на этом форуме, то этот иероглиф приобретает вид:  "à"

--
Вы получили это сообщение, поскольку подписаны на группу "Erlang по-русски".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russia...@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-...@googlegroups.com.

Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.

--
Вы получили это сообщение, поскольку подписаны на группу "Erlang по-русски".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russia...@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-...@googlegroups.com.

WWW

unread,
Apr 29, 2018, 12:32:57 PM4/29/18
to erlang-...@googlegroups.com
Мне нужно без ковбоя.

Alexey Eremikihin

unread,
May 4, 2018, 10:25:46 AM5/4/18
to erlang-...@googlegroups.com, Andrew N Golovkov
Определитесь с кодировкой.
Всё же параметры в гет запросе - это просто набор байт. А интерпретация набора байт как символа - это вопрос отображения в кодировке.
В однобайтовой кирилической кодировке cp1251 E0 - это действительно русская (кириллическая) буква а.
Но вот если взять латинскую кодировку cp1252 то E0 - это уже à

Вообще, такие проблемы должны уже были остаться в прошлом, когда действительно было популярно делать сайты в однобайтовых кодировках.
Браузеры всё ещё сохраняют старое поведение, когда строковые данные из форм отсылаются в той кодировке в которой отображается текущая страница.
Основные способы указать браузеру на кодировку - передать ее в хедере ответа и в <meta>. Конечно, там ещё есть вагон эвристик для определения, но лучше контролировать.

Современный путь - это Unicode и UTF-8 сейчас одна из самых популярных кодировок.
http://erlang.org/doc/apps/stdlib/unicode_usage.html

Стандартом де факто для таких преобразований, конечно, является библиотка iconv (на гитхабе есть биндинги). Но, там где ее нет под рукой для таких легаси портирований в коде просто заводится функция которая конвертит из однобайтовой кодировки в UTF-8. Пишется один раз длинная карта замены на все кирилические символы и забывается.
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес erlang-russia...@googlegroups.com.
Чтобы отправлять сообщения в эту группу, отправьте письмо на электронный адрес erlang-...@googlegroups.com.

WWW

unread,
May 4, 2018, 7:15:38 PM5/4/18
to Erlang по-русски
Спасибо всем кто отвечал.

Sergei Popov

unread,
May 8, 2018, 7:05:43 AM5/8/18
to Erlang по-русски
суббота, 5 мая 2018 г., 2:15:38 UTC+3 пользователь WWW написал:
> Спасибо всем кто отвечал.

Кто подскажет, как быстро зарегистрируют модераторы, чтоб вопрос создать?

Reply all
Reply to author
Forward
0 new messages