[Moscow.pm] use encoding и манипуляции со строками

Victor Efimov victor на vsespb.ru
Пт Апр 24 10:57:55 PDT 2015


Личное ИМХО - выпилить такой модуль. Это совсем зло такое делать. Одна
из проблем use encoding - как раз глобальное влияние на весь процесс,
чего лишены всякие 'use utf8'

24 апреля 2015 г., 20:52 пользователь Denis Ibaev <dionys на gmail.com> написал:
> Я б не изучал, но её подключает какой-то модуль из зависимостей проекта.
> Из-за чего в Mojolicious ломается декодирование параметров, содержащих JSON
> с кириллицей. Потому что url_unescape начинает возвращать строку с флагом, и
> она дальше не может быть перекодирована в нужную кодировку.
>
> 24 апреля 2015 г., 20:36 пользователь Victor Efimov <victor на vsespb.ru>
> написал:
>
>>
>> 2015-04-24 19:54 GMT+03:00 Denis Ibaev <dionys на gmail.com>:
>> > Привет.
>> >
>> > Не могу понять, почему в одном случае ниже приведённый скрипт выставляет
>> > у
>> > строки флаг 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
> moscow-pm на pm.org | http://moscow.pm.org
>


Подробная информация о списке рассылки Moscow-pm