<div dir="ltr">24 апреля 2015 г., 20:57 пользователь Victor Efimov <<a href="mailto:victor@vsespb.ru">victor@vsespb.ru</a>> написал:<br>> Личное ИМХО - выпилить такой модуль. Это совсем зло такое делать. Одна<br>> из проблем use encoding - как раз глобальное влияние на весь процесс,<br>> чего лишены всякие 'use utf8'<br><br><br>Получается, что в любом случае надо найти этот модуль. Кто-нибудь может<br>подсказать средство для построения дерева зависимостей по cpanfile?<br> <br><br>> 24 апреля 2015 г., 20:52 пользователь Denis Ibaev <<a href="mailto:dionys@gmail.com">dionys@gmail.com</a>> написал:<br>> > Я б не изучал, но её подключает какой-то модуль из зависимостей проекта.<br>> > Из-за чего в Mojolicious ломается декодирование параметров, содержащих JSON<br>> > с кириллицей. Потому что url_unescape начинает возвращать строку с флагом, и<br>> > она дальше не может быть перекодирована в нужную кодировку.<br>> ><br>> > 24 апреля 2015 г., 20:36 пользователь Victor Efimov <<a href="mailto:victor@vsespb.ru">victor@vsespb.ru</a>><br>> > написал:<br>> ><br>> >><br>> >> 2015-04-24 19:54 GMT+03:00 Denis Ibaev <<a href="mailto:dionys@gmail.com">dionys@gmail.com</a>>:<br>> >> > Привет.<br>> >> ><br>> >> > Не могу понять, почему в одном случае ниже приведённый скрипт выставляет<br>> >> > у<br>> >> > строки флаг utf8, а в другом нет. Без прагмы encoding такого эффекта не<br>> >> > наблюдается. Может кто-нибудь объяснить?<br>> >><br>> >> Наверное баг в прагме encoding? Она deprecated: "This module has been<br>> >> deprecated since perl v5.18.", как раз из-за своего странного<br>> >> поведения.<br>> >> Т.е. ответа на поставленный вопрос у меня нет, просто уточняю что эта<br>> >> прагма кривая и может и не стоит её поведение изучать.<br>> >><br>> >> ><br>> >> > Вывод скрипта:<br>> >> ><br>> >> > v1 is utf-8 = 0<br>> >> > v2 is utf-8 = 0<br>> >> > v1 is utf-8 = 1<br>> >> > v2 is utf-8 = 0<br>> >> ><br>> >> > Сам скрипт:<br>> >> ><br>> >> > use strict;<br>> >> > use warnings;<br>> >> > use v5.12;<br>> >> > use utf8;<br>> >> ><br>> >> > use encoding 'utf-8';<br>> >> ><br>> >> > my $v1 = '';<br>> >> > my $v2 = '';<br>> >> ><br>> >> > utf8::downgrade($v1);<br>> >> > utf8::downgrade($v2);<br>> >> ><br>> >> > say 'v1 is utf-8 = ', utf8::is_utf8($v1) || 0;<br>> >> > say 'v2 is utf-8 = ', utf8::is_utf8($v2) || 0;<br>> >> ><br>> >> > $v1 .= chr(hex($_)) for qw(22 D0);<br>> >> > $v2 .= chr(hex($_)) for qw(D0);<br>> >> ><br>> >> > say 'v1 is utf-8 = ', utf8::is_utf8($v1) || 0;<br>> >> > say 'v2 is utf-8 = ', utf8::is_utf8($v2) || 0;<br>> >> ><br>> >> > Окружение:<br>> >> ><br>> >> > $ perl -v<br>> >> > This is perl 5, version 14, subversion 2 (v5.14.2) built for<br>> >> > x86_64-linux-gnu-thread-multi<br>> >> > (with 57 registered patches, see perl -V for more detail)<br>> >> ><br>> >> > $ perl -MEncode -E 'say Encode->VERSION'<br>> >> > 2.73<br><br>-- <br>Денис Ибаев<br><br></div>