1

LWPを使用して取得した RSS データを解析するためにXML::RSSLiteを使用しています。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 に答える