我正在使用XML::RSSLite来解析我使用LWP检索到的RSS数据。 LWP正确地以正确的编码进行检索,但是当使用RSSLite来解析数据时,编码似乎丢失了,并且从输出中删除了é,è,à等字符。是否有设置选项以强制编码?
这是我的剧本:
use strict;
use XML::RSSLite;
use LWP::UserAgent;
use HTTP::Headers;
use utf8;
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->env_proxy;
my $URL = "http://www.boursier.com/syndication/rss/news/FR0004031839/FR";
my $response = $ua->get($URL);
if ($response->is_success) {
my $content = $response->decoded_content((charset => 'UTF-8'));
my %result;
parseRSS(\%result, \$content);
foreach my $item (@{ $result{items} }) {
print "ITEM: $item->{title}\n";
}
}
我尝试使用XML::RSS,因为它似乎有更多选项,在我的情况下可能很方便,但不幸的是它无法安装。 :(
答案 0 :(得分:4)
我喜欢Mojo::UserAgent以及Mojo::DOM已经获得了我需要的支持,而我没有跟踪正确使用的模块组合,它处理UTF-8位而没有做任何特别的事情:
use v5.10;
use open qw( :std :utf8 );
use Mojo::UserAgent;
my $ua = Mojo::UserAgent->new;
my $URL = "http://www.boursier.com/syndication/rss/news/FR0004031839/FR";
my $response = $ua->get($URL)->res;
my @links = $response
->dom( 'item > title' )
->map( sub { $_->text } )
->each;
$" = "\n";
print "@links\n";
有另一个例子
答案 1 :(得分:3)
删除0-9以外的字符〜!@#$%^& *() - + = a-zA-Z [];',。:“<>?\ s
因此,该模块无可救药地被打破。请使用XML::Feed
重试