1

我正在使用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,因为它似乎有更多选项在我的情况下可能很方便,但不幸的是它未能安装。:(

4

2 回答 2

4

我喜欢Mojo::UserAgentMojo::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";

我在使用 Mojo 进行无痛 RSS 处理还有另一个示例

于 2012-04-23T16:04:26.800 回答
3

RSSLite文档明确指出:

去掉 0-9~!@#$%^&*()-+=a-zA-Z[];',.:"<>?\s 以外的字符

因此,该模块已无可救药地损坏了。使用XML::Feed重试

于 2012-04-23T08:39:28.653 回答