Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 русский, utf8 больш   Dmitry E. Oboukhov   13 Dec 2006 21:37:54 
 Re: русский, utf8 больш   Andrew Alakozow   14 Dec 2006 12:46:48 
Архивное /ru.perl/39266a83cf87.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional