| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > hex |
| Автор: Семён Розовых 29.11.2002, 15:05 |
| Рассматривая многие исходники , я часто обнаруживаю вот такую строчку $val=~ s/%[0-9a-hA-H] {2}/pack('C',hex($1))/ge; Я так понимаю - это символы, которые перекодируются в шестнадцатиричную систему. Но зачем? И почему только до h и H, а не весь алфавит? |
| Автор: NightGoblin 30.11.2002, 19:05 |
| Это обработка CGI-запросов в формате application/x-www-urlencoded, в которой все символы, не входящие в \w (без локализации) преобразуются в коды вида %<код_символа> - например, %21 перекодируется в "!". Странно только, почему A-Ha-h, а не A-Fa-f... |
| Автор: Семён Розовых 1.12.2002, 07:18 |
| Таким макаром кодируются данные из формы. НО зачем? Что их так что ль просто нельзя обработать? |
| Автор: NightGoblin 1.12.2002, 17:50 |
| Дело в том, что когда данные посылаются из формы, имена параметров и их значения, например, разделяются символом "=", а пары "параметр=значение" - символом "&". И если такие символы встретятся в значении параметра, то получится непонятная ситуация, при которой этот символ надо во что-нибудь преобразовать. Ну и, чтобы не было путаницы с кириллицей (в рунете т.е.) или другими спецсимволами (вообще), их так кодируют. А строчка эта не кодирует, а разбирает закодированное значение параметра (если, конечно, val - это value |
| Автор: HalkaR 8.12.2002, 07:11 |
| На самом деле со всем этим добром сейчас разбираться не к чему. Есть такой хороший и удобный модуль CGI.pm, который сам разбирает запрос и перекодирует его. |