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

Denis Ibaev dionys на gmail.com
Пт Апр 24 11:18:38 PDT 2015


24 апреля 2015 г., 20:57 пользователь Victor Efimov <victor на vsespb.ru>
написал:
> Личное ИМХО - выпилить такой модуль. Это совсем зло такое делать. Одна
> из проблем use encoding - как раз глобальное влияние на весь процесс,
> чего лишены всякие 'use utf8'


Получается, что в любом случае надо найти этот модуль. Кто-нибудь может
подсказать средство для построения дерева зависимостей по cpanfile?


> 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

-- 
Денис Ибаев
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20150424/cc9739df/attachment-0001.html>


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