gpt4 book ai didi

html - Perl 编码 - 将文件保存为 UTF8

转载 作者:行者123 更新时间:2023-11-28 03:53:26 24 4
gpt4 key购买 nike

我有一个脚本可以下载 www 页面,我想提取文本并将其存储在统一编码中(UTF8 就可以)。下载 (UserAgent)、解析 (TreeBuilder) 和文本提取看起来不错,但我不确定我是否正确保存了它们。

在例如 Notepad++ 中打开输出文件时,他们不查看;原始 HTML View 在文本编辑器中找到。

HTML 文件通常有 字符集=windows-1256 或 字符集=UTF-8

所以我想如果我能让 UTF8 工作,那么这只是一个重新编码问题。这是我尝试过的一些方法,假设我将 HTML 文件保存到磁盘。

my $tree = HTML::TreeBuilder->new;
$tree->parse_file("$inhtml");
$tree->dump;

只有在之后,才在 .txt 文件中为 STDOUT View 正确捕获的转储输出在文本编辑器中将编码切换为 utf8……

$formatter = HTML::FormatText->new(leftmargin => 0, rightmargin => 50);
if (utf8::is_utf8($formatter->format($tree))) {
print " Is UTF8\n";
}
else {
print " Not UTF8\n";
}

Result 当内容说是 UTF8 时显示这是 UTF8,否则不是 UTF8。

我累了

opening an file with ">" and ">:utf8"
binmode(MYFILE, ":utf8");
encode("utf8", $string); (where string is the output of formatter->format(tree))

但似乎没有什么能正常工作。

有专家知道我缺少什么吗?

提前致谢!

最佳答案

这个例子可以帮助你找到你需要的东西:

use strict;
use warnings;
use feature qw(say);
use HTML::TreeBuilder qw( );
use Object::Destroyer qw( );

open(my $fh_in, "<:encoding(cp1252)", $ARGV[0]) or die $!;
open(my $fh_out, ">:encoding(UTF-8)", $ARGV[1]) or die $!;

my $tree = Object::Destroyer->new(HTML::TreeBuilder->new(), 'delete');
$tree->parse_file($fh_in);

my $h1Element = $tree->look_down("_tag", "h1");
my $h1TrimmedText = $h1Element->as_trimmed_text();
say($fh_out $h1TrimmedText);

关于html - Perl 编码 - 将文件保存为 UTF8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10173930/

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