Perl 对RSS解析的UTF-8支持

Perl 对RSS解析的UTF-8支持,perl,unicode,utf-8,rss,Perl,Unicode,Utf 8,Rss,我正在使用解析我检索到的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->

我正在使用解析我检索到的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"; 
   } 
}
我试图使用它,因为它似乎有更多的选项,在我的情况下可能很方便,但不幸的是,它未能安装

报告明确指出:

删除0-9~!@$%以外的字符^&*-+=a-zA-Z[];',:\

因此,模块被彻底破坏了。请使用

重试,并明确说明:

删除0-9~!@$%以外的字符^&*-+=a-zA-Z[];',:\

因此,模块被彻底破坏了。使用

再试一次我喜欢这样做,并且已经获得了所需的支持,无需跟踪要使用的模块的正确组合,而且它可以处理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";
我在

中有另一个例子,我喜欢这个例子,并且已经有了我需要的支持,而无需跟踪要使用的模块的正确组合,并且它可以处理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";


我在

上有另一个例子,URL给出了一个404未找到。如果您需要安装模块的帮助,请阅读,如果仍然需要。非常感谢Daxim four您的回答,在复制/过去过程中出现错误,我已经更正了它,URL现在很好。这不是Daxim指出的问题,但请注意,大多数XML解析器需要XML文档,这意味着您需要使用$response->decoded_contentcharset=>none来防止LWP尝试部分解析XML;该URL提供了一个404未找到。如果您需要安装模块的帮助,请阅读,如果仍然需要。非常感谢Daxim four您的回答,在复制/过去期间出现了错误,我已更正了它,URL现在已修复。这不是Daxim指出的问题,但请注意,大多数XML解析器需要XML文档,这意味着您需要使用$response->decoded_contentcharset=>“none”阻止LWP尝试部分解析XML;谢谢你的回答,我错过了。我将看一看XML:Feed。好吧,在有人修复它之前,这个模块是坏的。不过我不会说没有希望。谢谢你的回答,我错过了。我将看一看XML:Feed。好吧,在有人修复它之前,这个模块是坏的。不过,我不会说没有希望。我确实运行过它,但它显示的是破碎的字符,而不是口音。我有utf-8终端、语言环境和字体。这就是输出的样子:当您使用perl-C运行它时会发生什么?所有好的,即perl-cq.pl显示正确的字符。进一步的测试表明,-CO/-C2是Enough,我确实运行了它,但它显示的是不完整的字符来代替重音。我有utf-8终端、语言环境和字体。这就是输出的样子:当您使用perl-C运行它时会发生什么?所有好的,即perl-cq.pl显示正确的字符。进一步的测试表明-CO/-C2就足够了