<div dir="ltr"><div><div><div><tt><a href="http://search.cpan.org/search?mode=module&query=perldoc"></a></tt>perldoc perldiag | grep -A 9 'Wide char'<br>       Wide character in %s<br>           (S utf8) Perl met a wide character (>255) when it wasn't expecting<br>           one.  This warning is by default on for I/O (like print).  The<br>           easiest way to quiet this warning is simply to add the ":utf8"<br>           layer to the output, e.g. "binmode STDOUT, ':utf8'".  Another way<br>           to turn off the warning is to add "no warnings 'utf8';" but that is<br>           often closer to cheating.  In general, you are supposed to<br>           explicitly mark the filehandle with an encoding, see open and<br>           "binmode" in perlfunc.<br><br></div>1. либо убрать use utf8;<br></div>2. либо binmode STDERR, ":utf8"; binmode STDOUT, ":utf8";<br></div>3. ну или так :)<br>no utf8; <br>my $aa = { a=>'b', c=> 'д' }; # тут русская буква                                                                                                                                                                                                                                                                                                                                                                                                                                               <br>use utf8;<br><br></div><div class="gmail_extra"><br><div class="gmail_quote">11 марта 2015 г., 21:26 пользователь Nick Knutov <span dir="ltr"><<a href="mailto:mail@knutov.com" target="_blank">mail@knutov.com</a>></span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Он там есть. use utf8::all так же не помог. При этом from_yaml там же<br>
работает абсолютно нормально и прозрачно - исходный хеш в ютф,<br>
сериализуется в строку с ютф, в базу пишется, из базы берется,<br>
десериализуется нормально и на выходе везде ютф.<br>
<br>
<br>
11.03.2015 19:03, TheAthlete пишет:<br>
<div class="HOEnZb"><div class="h5">> Тут нужен use utf8;<br>
><br>
> perl -Mutf8 -MJSON::XS -E '$h = {a=>"b", c=>"д"}; $s =<br>
> encode_json($h); say $s'<br>
> {"c":"д","a":"b"}<br>
><br>
> perl -MJSON::XS -E '$h = {a=>"b", c=>"д"}; $s = encode_json($h); say $s'<br>
> {"c":"д","a":"b"}<br>
><br>
> Nick Knutov <<a href="mailto:mail@knutov.com">mail@knutov.com</a>> писал(а) в своём письме Wed, 11 Mar 2015<br>
> 12:05:47 +0300:<br>
><br>
>> Столкнулся с проблемой, туплю и не могу понять почему всё так.<br>
>><br>
>> use Dancer ':syntax';<br>
>> ...<br>
>> my $aa = { a=>'b', c=>'д' }; # тут русская буква<br>
>> my $jj = to_json($aa);<br>
>> utf8::is_utf8($jj); # returns 1<br>
>> my $bb = from_json($jj);<br>
>><br>
>> Получаю Wide character in subroutine entry. Почему?(1)<br>
>><br>
>> Ок, грепаю рассылку, делаю<br>
>><br>
>> my $jj = to_json($aa);<br>
>> utf8::encode($jj);<br>
>> my $bb = from_json($jj);<br>
>><br>
>> Судя по Dumper($aa, $jj, utf8::is_utf8($jj), $bb);<br>
>> $bb теперь такое же, как $aa, а вот $jj в текстовом представлении<br>
>> $VAR2 = '{<br>
>>    "c" : "д",<br>
>>    "a" : "b"<br>
>> }';<br>
>> т.е. содержит совсем не 'д' Почему?(2)<br>
>><br>
>> Почитав документацию на модули, я подумал, что from_json всегда ожидает<br>
>> отсутствие utf8 флага, но есть decode_json, которая для случая когда<br>
>> флаг есть. Ок. Делаем<br>
>> use Cpanel::JSON::XS 'decode_json';<br>
>> $cc = Cpanel::JSON::XS::decode_json($jj);<br>
>><br>
>> И если перед этим не было utf8::encode($jj);, то снова Wide character in<br>
>> subroutine entry. ПОЧЕМУ???(3) Ведь у строки есть флаг и decode_json,<br>
>> судя по документации, ожидает его наличия.<br>
>><br>
>> и (4) - как правильно делать все это?<br>
<br>
--<br>
</div></div><span class="im HOEnZb">Best Regards,<br>
Nick Knutov<br>
<a href="http://knutov.com" target="_blank">http://knutov.com</a><br>
ICQ: 272873706<br>
Voice: +7-904-84-23-130<br>
<br>
</span><div class="HOEnZb"><div class="h5">--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature">С уважением<br>Михаил Шогин.<br></div>
</div>