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

Vladimir V. Perepelitsa inthrax на gmail.com
Вт Сен 2 06:40:42 PDT 2008


On Tuesday 02 September 2008 17:07:31 Dmitry E. Oboukhov wrote:
> > Доброе время суток.
> >
> > А я не нашел или доклад по utf8 так и не выложили на веб ?
>
> кстати в свете CGI и переезда на perl 5.8.10
>
> тут такая проблема, не везде где используется мой скрипт cgi стоит CGI с
> поддержкой utf8 (в Debian еще CGI старой версии топчется)
> местами старый, потому написал потомка что-то в стиле (реально
> посложнее, с wantarray и Vars, тут только суть):
>
> use base qw(CGI);
>
> sub param
> {
> 	my $class=shift;
>     my @result=$class->SUPER::param(@_);
>     for (@result)
>     {
>     	next if (utf8::is_utf8($_));
>     	$_ = decode utf8=>$_;
>     }
>     return @result;
> }
>
> и наткнулся на неприятность на perl 5.10:
>
> некоторые строки дают true по флагу utf8::is_utf8, и потому их данный
> механизм пропускает, а в реале они не utf8
>
> то есть одинаковый код вида
>
> $var = myCGI->param('name');
>
> может дать как строку с флагом, так и без, зависимости я не уловил от
> чего зависит, по видимому от контента который приходит :(
>
> пришлось сделать нечто вроде
>
> my $tmp = eval {decode utf8=>$_;};
> $_=$tmp unless $@;
>
> работает, но не очень красиво это все выглядит.

а почему-бы не utf8::decode?
его eval'ить не нужно, он проапгрейдит, если необходимо и если можно.
плюс он раза в 3 быстрее :)

>
> по какому критерию он считает некоторые строки что они с установленным
> флагом я не понял.
>
> кто-либо натыкался на аналогичные траблы?

CGI не юзаем ;)

> --
> ... mpd paused: Manowar - Defender
>
> . ''`.                               Dmitry E. Oboukhov
>
> : :’  :   email: unera на debian.org jabber://UNera@uvw.ru
>
> `. `~’              GPGKey: 1024D / F8E26537 2006-11-21
>   `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537



-- 
Vladimir Perepelitsa aka Mons Anderson
<inthrax на gmail.com> / #99779956


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