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