Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > Ошибка encode при декодировании из utf8 |
Автор: alezzz 15.4.2011, 11:05 | ||||
Получаю ответ на LWP::Simple get. Ответ в виде XML, и в нем есть кирилица в utf8. Делаю encode И получаю
Пробовал регуляркой вырезать только нужный текст из XML и его уже перекодировать, но тоже самое. декодирую так:
|
Автор: arto 15.4.2011, 11:41 |
# GET "http://forum.vingrad.ru/index.php?showtopic=327136" | perl -MEncode=encode,decode -lne 'encode("cp1251", decode("utf8", $_)) =~ m#<title>.+?</title>#smi && print $&' <title>VPF::Ошибка encode при декодировании из utf8 - Форум программистов</title> # вы уверены в утфности текста? |
Автор: IceSunrise 15.4.2011, 11:47 | ||||
alezzz, ошибка возникает при декодировании Это должно работать, если в $content действительно utf8
Если не сработает, запостите сюда дамп переменной $content до перекодирований. Вот так
|
Автор: alezzz 15.4.2011, 12:06 | ||||
да, сайт возвращает XML с кирилицей в утф Я пробовал сделать принт до декодирования, получил такое:
сам контент
|
Автор: gcc 15.4.2011, 12:31 | ||
http://forum.vingrad.ru/forum/topic-282078/hl/utf8/index.html http://forum.vingrad.ru/forum/topic-274374/hl/utf8/15.html Добавлено @ 12:34 для MVC Catalyst пытались сделать, чтобы оно не сбивалось в любом случае! http://search.cpan.org/~bobtfish/Catalyst-Plugin-Unicode-Encoding-1.1/lib/Catalyst/Plugin/Unicode/Encoding.pm http://cpansearch.perl.org/src/BOBTFISH/Catalyst-Plugin-Unicode-Encoding-1.1/lib/Catalyst/Plugin/Unicode/Encoding.pm
тут http://www.mail-archive.com/[email protected]/msg02350.html очень активно обсуждали там Bill Moseley написал |
Автор: arto 15.4.2011, 12:36 |
url? |
Автор: alezzz 15.4.2011, 13:16 | ||
http://morpher.ru/WebServices/Morpher.aspx вот пример:
и еще, дома работает без проблем, на работе не хочет, кроме WinXP/Win 7 не вижу разницы. |
Автор: arto 15.4.2011, 13:42 |
perl -v ? у меня работает нормально |
Автор: alezzz 15.4.2011, 14:06 |
This is perl, v5.10.0 built for MSWin32-x86-multi-thread (with 5 registered patches, see perl -V for more detail) вот в этом и проблема, пытаюсь понять что не так. Еще: работает - файрвол отключен не работает - файрвол включен, но get отдает контент работает и не работатет на разных компьютерах, перл одинаковый |
Автор: arto 15.4.2011, 14:44 |
проверьте, на чем ломается: perldoc Encode | less -p "Handling Malformed Data" |
Автор: alezzz 15.4.2011, 20:12 |
Решил проблему, поменял LWP::Simple на LWP::UserAgent (когда гуглил что-то такое видел, но не обратил сразу внимания). Вобщем такие наблюдения: брал контент из $content->content и $content->decoded_content, если их вывести принтом то внешне ничем не отличаются, только на $content->decoded_content появляется "Wide character in print at...", зато длины строк если посмотреть через length() отличаются. Отправил на encode $content->content, работает нормально. Непонятно, функции is_utf8, _utf8_on, _utf8_off из Encode реализованы? Ругается "Undefined subroutine &main::is_utf8 ..." |
Автор: arto 16.4.2011, 11:24 |
импортируйте |
Автор: alezzz 16.4.2011, 11:39 |
Точно ![]() $flag = Encode::is_utf8($string); Спасибо. |