|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Dmitry E. Oboukhov 2:5004/75.151 13 Dec 2006 21:37:54 To : Andrew Alakozow Subject : русский, utf8 больш -------------------------------------------------------------------------------- AA> Dmitry E Oboukhov wrote: AA> >> есть мысли по поводу того чтобы заработало то же самое но в CGI-скрипте? AA> AA> Посмотри через Devel::Peek на данные формы, при помощи Encode их нужно AA> привести к utf-8. что-то какой-то тихий ужас. значит так, модифицировал я тестовый скрипт для Devel::Peek: ========================================= #!/usr/bin/perl use Devel::Peek; use CGI::Simple; use POSIX; use encoding 'utf8'; my %cgi=CGI::Simple->new()->Vars; my $name='тест'; BEGIN { POSIX::dup2(fileno(STDOUT), fileno(STDERR)); $|=1; print <<html; Content-Type: text/html; charset=utf-8 <html> <body> <form> <input type="text" name="field"> <input type="submit" value="Проверка"><br> html }; if (exists $cgi{field}) { print "Результат проверки: "; if ($cgi{field} =~ /$name/i) { print "да\n"; } else { print "Hет\n"; } print "<br>Введено: $cgi{field}\n"; print "<br>Проверочное слово: $name\n"; print "<pre>\n"; Dump($cgi{field}); Dump($name); print "</pre>\n"; } print <<html; </form> </body> </html> html ========================================= обратите внимание на Content-Type: text/html; charset=utf-8 теперь результат работы скрипта: Результат проверки: Hет Введено: тест Проверочное слово: тест SV = PV(0x8281ac0) at 0x833d2c0 REFCNT = 1 FLAGS = (POK,pPOK) PV = 0x8163c50 "\321\202\320\265\321\201\321\202"\0 CUR = 8 LEN = 12 SV = PV(0x8281bf0) at 0x814f600 REFCNT = 1 FLAGS = (PADBUSY,PADMY,POK,pPOK,UTF8) PV = 0x828bdd0 "\321\202\320\265\321\201\321\202"\0 [UTF8 "\x{442}\x{435}\x{441}\x{442}"] CUR = 8 LEN = 12 и что теперь делать-то? перекодировать данные формы из кодировки (какой?) в UTF? или как-то можно напрямую флаг "UTF8" поставить? данные совпадают байт в байт, но сравнивать он их не хочет. из за флага насколько я понимаю. то есть сделать ему decode 'utf8', а потом encode 'utf8'? бррр! может можно как-то указать что эта строка utf и эта строка тоже utf? --- Mutt/1.5.13 (2006-08-11) * Origin: Слава КПСС! (2:5004/75.151) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/39266a83cf87.html, оценка из 5, голосов 10
|