[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