gpt4 book ai didi

perl - 为什么 Perl HTTP::Response 不解码这个撇号?

转载 作者:行者123 更新时间:2023-12-02 11:01:18 24 4
gpt4 key购买 nike

我正在使用

my $ua = new LWP::UserAgent;
$ua->agent("Mozilla/5.0 (Windows NT 6.1; Intel Mac OS X 10.6; rv:7.0.1) Gecko/20100101 Firefox/7.0.1 ");
my $url = "http://somedomain.com/page/";
my $req = new HTTP::Request 'GET' => $url;
$req->header('Accept' => 'text/html');
my $response = $ua->request($req);
my $html = $response->decoded_content;

获取网页。在此页面上,出现Abobo's Big Adventure。在$request->content$request->decoded_content中,这显示为Abobo的大冒险

我可以做些什么来正确解码吗?

最佳答案

为什么,这是完全有效的 HTML!但是,您可以使用 HTML::Entities 解码实体来自 CPAN。

use HTML::Entities;

...;
my $html = $response->decoded_content;
my $decoded_string = decode_entities($html);

HTTP::Response::decoded_content 的文档声明内容编码和字符集被颠倒,而不是 HTML 实体(这是 HTML/XML 语言功能,而不是真正的编码)。

编辑:

但是,正如 ikegami 指出的那样,立即解码实体可能会导致 HTML 无法解析。因此,最好先解析 HTML(例如使用 HTML::Tree ),然后仅在需要时解码文本节点。

use HTML::TreeBuilder;

my $url = ...;
my $tree = HTML::TreeBuilder->new_from_url($url); # invokes LWP automatically
my $decoded_text = decode_entities($tree->as_text); # dumps the tree as flat text, then decodes.

关于perl - 为什么 Perl HTTP::Response 不解码这个撇号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13960859/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com