[Moscow.pm] json, Dancer1, utf8

Nick Knutov mail на knutov.com
Ср Мар 11 03:06:00 PDT 2015


utf8 вообще везде.



11.03.2015 15:03, Artem Zhuravlev пишет:
> В какой кодировке проект? И консоль куда вы все это выводите? 
> 
> 11 марта 2015 г., 12:05 пользователь Nick Knutov <mail на knutov.com
> <mailto:mail на knutov.com>> написал:
> 
>     Столкнулся с проблемой, туплю и не могу понять почему всё так.
> 
>     use Dancer ':syntax';
>     ...
>     my $aa = { a=>'b', c=>'д' }; # тут русская буква
>     my $jj = to_json($aa);
>     utf8::is_utf8($jj); # returns 1
>     my $bb = from_json($jj);
> 
>     Получаю Wide character in subroutine entry. Почему?(1)
> 
>     Ок, грепаю рассылку, делаю
> 
>     my $jj = to_json($aa);
>     utf8::encode($jj);
>     my $bb = from_json($jj);
> 
>     Судя по Dumper($aa, $jj, utf8::is_utf8($jj), $bb);
>     $bb теперь такое же, как $aa, а вот $jj в текстовом представлении
>     $VAR2 = '{
>        "c" : "д",
>        "a" : "b"
>     }';
>     т.е. содержит совсем не 'д' Почему?(2)
> 
>     Почитав документацию на модули, я подумал, что from_json всегда ожидает
>     отсутствие utf8 флага, но есть decode_json, которая для случая когда
>     флаг есть. Ок. Делаем
>     use Cpanel::JSON::XS 'decode_json';
>     $cc = Cpanel::JSON::XS::decode_json($jj);
> 
>     И если перед этим не было utf8::encode($jj);, то снова Wide character in
>     subroutine entry. ПОЧЕМУ???(3) Ведь у строки есть флаг и decode_json,
>     судя по документации, ожидает его наличия.
> 
>     и (4) - как правильно делать все это?
> 
> 
> 
>     --
>     Best Regards,
>     Nick Knutov
>     http://knutov.com
>     ICQ: 272873706
>     Voice: +7-904-84-23-130
>     --
>     Moscow.pm mailing list
>     moscow-pm на pm.org <mailto:moscow-pm на pm.org> | http://moscow.pm.org
> 
> 
> 
> 
> -- 
> Best regards,
> Artem V. Zhuravlev
> 
> 

-- 
Best Regards,
Nick Knutov
http://knutov.com
ICQ: 272873706
Voice: +7-904-84-23-130


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