【问题标题】:UTF-8 support for RSS parsing对 RSS 解析的 UTF-8 支持
【发布时间】:2012-04-23 08:18:37
【问题描述】:

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

【问题讨论】:

  • 那个 URL 给出了 404 Not Found。
  • 如果您在安装模块方面需要帮助,请阅读What's the easiest way to install a missing Perl module?,如果仍然需要,请阅读open a new question
  • 非常感谢 Daxim 4 您的回答,复制/过去时出错,我已更正,现在 URL 正常
  • 这不是这里的问题(正如 daxim 指出的那样),但请注意,大多数 XML 解析器都需要 XML 文档,这意味着您需要防止 LWP 尝试使用 @987654327 部分解析 XML @

标签: perl unicode utf-8 rss


【解决方案1】:

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

我在Painless RSS processing with Mojo 有另一个例子

【讨论】:

  • 我确实运行了它,但它显示了损坏的字符而不是重音符号。我确实有 utf-8 终端、语言环境和字体。这是输出的样子:imgur.com/KyVPJ
  • 使用perl -C 运行它会发生什么?
  • 一切都好 - 即 perl -C q.pl 显示正确的字符。进一步测试表明-CO/-C2就足够了
【解决方案2】:

RSSLite documentation 明确指出:

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

因此,该模块已无可救药地损坏了。再试一次XML::Feed

【讨论】:

  • 谢谢你的回答,我错过了。我来看看 XML:Feed。
  • 嗯,模块坏了,直到有人修复它。不过,我不会说没有希望。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-07
  • 2021-08-01
  • 2010-10-05
  • 1970-01-01
  • 2012-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多