<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    use v5.14.<br>
    <br>
    Запустил ваш код для теста и (в некоторых почтовых клиентах картинка
    окажется в аттаче):<br>
    <br>
    <img src="cid:part1.07050809.08060908@knutov.com" alt=""
      height="248" width="637"><br>
    <br>
    <div class="moz-cite-prefix">11.03.2015 19:02, Михаил Шогин пишет:<br>
    </div>
    <blockquote
cite="mid:CALzA1Mye8GKyiH_+cnpV-3_J6BHYuKixjzSU0+Wr0=uLrdGJGQ@mail.gmail.com"
      type="cite">
      <div dir="ltr">А Perl какой?<br>
        <br>
        mshogin@guinea:~/sandbox$ set | grep LANG<br>
        LANG=en_US.UTF-8<br>
        LANGUAGE=en_US:<br>
        <br>
        mshogin@guinea:~/sandbox$ file -i <a moz-do-not-send="true"
          href="http://t_dance.pl">t_dance.pl</a> <br>
        <a moz-do-not-send="true" href="http://t_dance.pl">t_dance.pl</a>:
        text/plain; charset=utf-8<br>
        <br>
        mshogin@guinea:~/sandbox$ cat <a moz-do-not-send="true"
          href="http://t_dance.pl">t_dance.pl</a> <br>
        use Dancer ':syntax';<br>
        use Data::Printer colored => 1;<br>
        <br>
        my $aa = { a=>'b', c=>'д' }; # тут русская буква<br>
        p $aa;<br>
        my $jj = to_json($aa);<br>
        p $jj;<br>
        my $test = utf8::is_utf8($jj); # returns 1<br>
        p $test;<br>
        my $bb = from_json($jj);<br>
        p $bb;<br>
        mshogin@guinea:~/sandbox$ perl <a moz-do-not-send="true"
          href="http://t_dance.pl">t_dance.pl</a> <br>
        \ {<br>
            a   "b",<br>
            c   "д"<br>
        }<br>
        "{<br>
           "c" : "д",<br>
           "a" : "b"<br>
        }<br>
        "<br>
        1<br>
        \ {<br>
            a   "b",<br>
            c   "д"<br>
        }<br>
        <br>
        mshogin@guinea:~/sandbox$ perl -v<br>
        <br>
        This is perl 5, version 14, subversion 2 (v5.14.2) built for
        x86_64-linux-gnu-thread-multi<br>
        <br>
        <br>
      </div>
      <div class="gmail_extra"><br>
        <div class="gmail_quote">11 марта 2015 г., 14:04 пользователь
          PEF Secure <span dir="ltr"><<a moz-do-not-send="true"
              href="mailto:pef-secure@yandex.ru" target="_blank">pef-secure@yandex.ru</a>></span>
          написал:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex"><span
              class="">On Wednesday, March 11, 2015 14:05:47 Nick Knutov
              wrote:<br>
              > Столкнулся с проблемой, туплю и не могу понять почему
              всё так.<br>
              ><br>
              > use Dancer ':syntax';<br>
              > ...<br>
              > my $aa = { a=>'b', c=>'д' }; # тут русская
              буква<br>
              > my $jj = to_json($aa);<br>
              <br>
            </span>А зачем вы так делаете? Понимаю, бывают случаи, но
            зачем? json -- внешнее<br>
            представление, как правило, его лучше, по моему мнению,
            иметь заенкоденым уже.<br>
            Т.е. encode_json().<br>
            <span class=""><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>
            </span>Результат сильно напоминает двойной ен(де?)кодинг.
            Нужно найти в какой момент<br>
            теряется баланс енкодинга-декодинга.<br>
            <span class=""><br>
              > Почитав документацию на модули, я подумал, что
              from_json всегда ожидает<br>
              > отсутствие utf8 флага, но есть decode_json, которая
              для случая когда<br>
              > флаг есть.<br>
              <br>
            </span>Как раз decode_json перекодирует из внешнего
            (бинарного) во внутренний utf8,<br>
            Т.е. флага не было => стал.<br>
            <br>
            perl -Mutf8 -MJSON -le '$a={a=>"b", c=>"д"}; print
            0+utf8::is_utf8($a->{c});<br>
            print 0+utf8::is_utf8(encode_json($a))'<br>
            <br>
            1<br>
            0<br>
            <br>
            perl -Mutf8 -MJSON -le '$a={a=>"b", c=>"д"}; print
            0+utf8::is_utf8($a->{c});<br>
            print 0+utf8::is_utf8(encode_json($a)); print<br>
            0+utf8::is_utf8(decode_json(encode_json($a))->{c}); '<br>
            <br>
            1<br>
            0<br>
            1<br>
            <br>
            Если у Cpanel::JSON::XS есть особенности, то я не в курсе.
            Парой к to_json<br>
            является from_json, насколько я знаю, они _не_меняют_ utf8.<br>
            <span class="HOEnZb"><font color="#888888"><br>
                --<br>
                PEF Developer<br>
              </font></span>
            <div class="HOEnZb">
              <div class="h5">--<br>
                Moscow.pm mailing list<br>
                <a moz-do-not-send="true" href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a>
                | <a moz-do-not-send="true" 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>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Best Regards,
Nick Knutov
<a class="moz-txt-link-freetext" href="http://knutov.com">http://knutov.com</a>
ICQ: 272873706
Voice: +7-904-84-23-130 </pre>
  </body>
</html>