|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Dmitry E. Oboukhov 2:5020/830.100 26 Jan 2008 22:41:16 To : All Subject : и снова о юникоде -------------------------------------------------------------------------------- символы в кодировке koi8r и такого вида конструкции: а страница доступна только для скрипт работает в локали utf-8. если контенту сделать такое преобразование: use Encode qw(encode decode); ... $charset='koi8-r'; ... $content=encode('utf-8', decode($charset, $content, Encode::FB_QUIET)); и вывести его на экран, то на экране видим русские буквы в местах где был текст в koi8, и стра в местах где был этот закодированный юникод. теперь я следом делаю: $content=~s/\&\#(\d{4})\;/pack 'U', $1/eg; и получаю такой результат: все закодированные в коды строки стали нормально видны по русски, а все русские строки до этого показывавшиеся корректно превратились во вражескую кабалистику (хотя их регулярное выражение затронуть не должно было) вот тестовый скрипт демонстрирующий эффект: nbw:[~/bite]$ cat test.pl #!/usr/bin/perl use warnings; use strict; my $str=<<endstring; а страница доступна только для это тестовая строка в юникоде endstring print "=" x 50, "\n"; print $str, "\n"; print "=" x 50, "\n"; $str=~s/\&\#(\d{4})\;/pack 'U', $1/eg; print $str, "\n"; а вот результаты его работы: nbw:[~/bite]$ perl test.pl ================================================== а страница доступна только для это тестовая строка в юникоде ================================================== Wide character in print at test.pl line 19. а страница доступна только для надеюсь через двойной гейт пройдет в удобоваримой форме то что приведено выше :) что я делаю неправильно? ... Выборы, выборы! Все кандидаты ...ры! (ц) Ленинград --- Mutt/1.5.17 (2007-12-11) * Origin: Debian GNU Linux (2:5020/830.100) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/446166eeffa3.html, оценка из 5, голосов 10
|