У меня есть следующий код:Perl WWW :: Механизируйте вопрос кодирования
my ($url) = "http://example.com"
my $m = WWW::Mechanize->new();
$m->get($url);
my $c = $m->content;
my $tree = HTML::TreeBuilder::XPath->new_from_content($c);
if (my $content = $tree->look_down(_tag => "div", class => "content")) {
$content = $content->as_text();
}
Вопрос в том, когда я анализирую содержание, часть текста имеет одинарные или двойные кавычки, которые не получают проанализированные правильно. Например, “this”
становится “thisâ€
.
Это мое понимание, что это некоторая Windows-1252
кодировка. Как я могу это исправить?
Я попытался добавить binmode STDOUT, ':encoding(utf-8)';
в начале программы, это не помогло.
Я пробовал добавить $content = utf8::decode($content);
, но это не помогло.
Я получаю эту ошибку: 'Не удается найти метод объекта "decoded_content" с помощью пакета "WWW :: Mechanize" в script.pl линии 75 . – KingsInnerSoul
Я понял, что мне не хватает 'WWW :: Mechanize :: DecodedContent'. Как только это было исправлено, код работал. Но я все еще получаю ту же проблему. Для другого примера я получаю 'eâ € |' вместо' ... ' – KingsInnerSoul
ОК, мне пришлось модифицировать ваш ответ на:' $ m-> decoded_content (charset => 'utf8'); ' – KingsInnerSoul