<div dir="ltr"><br><br><div class="gmail_quote">2008/9/2 Vladimir V. Perepelitsa <span dir="ltr"><<a href="mailto:inthrax@gmail.com">inthrax@gmail.com</a>></span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div></div><div class="Wj3C7c">On Tuesday 02 September 2008 15:03:50 Vyacheslav Matjukhin wrote:<br>
> > более новая версия:<br>
> > <a href="http://taka.xfo.cc/utf8.xul" target="_blank">http://taka.xfo.cc/utf8.xul</a><br>
><br>
> Спасибо за отличную презентацию, но есть один вопрос.<br>
> В 18 слайде, да и в остальных неявным образом, утверждается, что utf-ный<br>
> флаг у "\x{d0}\x{90}" включен. У меня получается по-другому:<br>
><br>
> $ perl -MEncode=is_utf8 -le '$x = "\x{d0}\x{90}"; $y = "\x{410}"; $c = sub<br>
> {$_ = shift; print $_, is_utf8($_) ? ": on" : ": off" }; $c->($x);<br>
> $c->($y);'<br>
> А: off<br>
> Wide character in print at -e line 1.<br>
> А: on<br>
><br>
> То есть флаг выключен, если в строке нет ни одного символа с кодом >255.<br>
> (perl v5.8.8)<br>
<br>
</div></div>1. это "проблемы" функции utf8::is_utf8.<br>
для нее символы <255 utf'ными не являются.</blockquote><div><br>У меня в коде Encode::is_utf8 используется :)<br>А какой функцией тогда вообще можно узнать, включен ли флаг?<br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
2. wide character in print получается тоже только в том случае, если вы<br>
печатаете wide character, т.е. символ с кодом > 255 :)</blockquote><div><br>Ага, это я понимаю. <br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
<br>
А из чего я взял, что флаг включен - оттуда что я получил такую строку<br>
включением флага на всей строке. Для дампера есть разница даже для символов с<br>
кодом < 255 </blockquote><div><br>Можно увидеть пример кода?<br>У меня не получается придумать пример, когда бы "\x{d0}\x{90}" можно было отличить от "А".<br><br>$ perl -MData::Dumper -e '$x = "\x{d0}\x{90}"; $y = "А"; print Dumper $x; print Dumper $y;'<br>
$VAR1 = 'А';<br>$VAR1 = 'А';<br><br>Получается вот так:<br>$ perl -MData::Dumper -e 'use utf8; $x = "\x{d0}\x{90}"; $y = "А"; print Dumper $x; print Dumper $y;'<br>$VAR1 = 'А';<br>
$VAR1 = "\x{410}";<br> <br>Но это объясняется как раз тем, что при use utf8 строка "А" изначально декодирована в utf, поэтому ничего не доказывает.<br><br>Мне пока кажется, что perl включает флаг только при наличии хотя бы одного символа с кодом >255.<br>
<br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<div><div></div><div class="Wj3C7c"><br>
--<br>
Vladimir Perepelitsa aka Mons Anderson<br>
<<a href="mailto:inthrax@gmail.com">inthrax@gmail.com</a>> / #99779956<br>
</div></div></blockquote></div><br></div>