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

Dmitry E. Oboukhov unera на debian.org
Вт Сен 2 06:07:31 PDT 2008


> Доброе время суток.

> А я не нашел или доклад по 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 $@;

работает, но не очень красиво это все выглядит.

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

кто-либо натыкался на аналогичные траблы?
--
... 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
----------- следущая часть -----------
A non-text attachment was scrubbed...
Name: отсутствует
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20080902/918b931c/attachment-0001.bin>


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