[Moscow.pm] Доклад по utf8

Vyacheslav Matjukhin mmcleric на gmail.com
Вт Сен 2 06:00:12 PDT 2008


2008/9/2 Vladimir V. Perepelitsa <inthrax на gmail.com>

> On Tuesday 02 September 2008 15:03:50 Vyacheslav Matjukhin wrote:
> > > более новая версия:
> > > http://taka.xfo.cc/utf8.xul
> >
> > Спасибо за отличную презентацию, но есть один вопрос.
> > В 18 слайде, да и в остальных неявным образом, утверждается, что utf-ный
> > флаг у "\x{d0}\x{90}" включен. У меня получается по-другому:
> >
> > $ perl -MEncode=is_utf8 -le '$x = "\x{d0}\x{90}"; $y = "\x{410}"; $c =
> sub
> > {$_ = shift; print $_, is_utf8($_) ? ": on" : ": off" }; $c->($x);
> > $c->($y);'
> > А: off
> > Wide character in print at -e line 1.
> > А: on
> >
> > То есть флаг выключен, если в строке нет ни одного символа с кодом >255.
> > (perl v5.8.8)
>
> 1. это "проблемы" функции utf8::is_utf8.
> для нее символы <255 utf'ными не являются.


У меня в коде Encode::is_utf8 используется :)
А какой функцией тогда вообще можно узнать, включен ли флаг?


>
> 2. wide character in print получается тоже только в том случае, если вы
> печатаете wide character, т.е. символ с кодом > 255 :)


Ага, это я понимаю.

>
>
> А из чего я взял, что флаг включен - оттуда что я получил такую строку
> включением флага на всей строке. Для дампера есть разница даже для символов
> с
> кодом < 255


Можно увидеть пример кода?
У меня не получается придумать пример, когда бы "\x{d0}\x{90}" можно было
отличить от "А".

$ perl -MData::Dumper -e '$x = "\x{d0}\x{90}"; $y = "А"; print Dumper $x;
print Dumper $y;'
$VAR1 = 'А';
$VAR1 = 'А';

Получается вот так:
$ perl -MData::Dumper -e 'use utf8; $x = "\x{d0}\x{90}"; $y = "А"; print
Dumper $x; print Dumper $y;'
$VAR1 = 'А';
$VAR1 = "\x{410}";

Но это объясняется как раз тем, что при use utf8 строка "А" изначально
декодирована в utf, поэтому ничего не доказывает.

Мне пока кажется, что perl включает флаг только при наличии хотя бы одного
символа с кодом >255.


>
> --
> Vladimir Perepelitsa aka Mons Anderson
> <inthrax на gmail.com> / #99779956
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено&hellip;
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20080902/d0c4115d/attachment.html>


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