Perl 对RSS解析的UTF-8支持
我正在使用解析我检索到的RSS数据。LWP以正确的编码进行正确检索,但当使用RSSLite解析数据时,编码似乎丢失,并且从输出中删除了诸如é、è、è等字符。是否有可设置的选项以强制编码 这是我的剧本: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->
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就足够了