我有一个脚本,将下载www网页,我想提取文本并将其存储在一个统一的编码(UTF8会很好)。下载(UserAgent),解析(TreeBuilder)和文本提取似乎很好,但我不知道我是否正确保存它们。Perl编码 - 将文件保存到UTF8
当打开例如notepad ++中的输出文件时,它们不会查看;原始HTML视图在文本编辑器中查找。
的HTML文件通常具有 的charset =窗口-1256或 的charset = UTF8
所以我想,如果我能得到一个UTF8的工作,那么它只是一个再编码的问题。假设我有一个保存到磁盘的HTML文件,下面是我尝试过的一些内容。
my $tree = HTML::TreeBuilder->new;
$tree->parse_file("$inhtml");
$tree->dump;
从STDOUT意见.txt文件正确捕获转储只 切换编码在文本编辑器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";
}
结果表明这是UTF8当内容说,是,而不是UTF8,否则。
我已经厌倦
opening an file with ">" and ">:utf8"
binmode(MYFILE, ":utf8");
encode("utf8", $string); (where string is the output of formatter->format(tree))
但似乎没有正常工作。
在那里的任何专家知道我缺少什么?
在此先感谢!
貌似问题是输入编码。我假设自从perl正在读东西,如果它是UTF-8,它会正确地读取它。显然不是!此代码帮助....现在我只需要弄清楚每种文件类型的编码!当有一个content_type标签时,它很简单,但否则......?任何方式自动做到这一点? – TerpFan 2012-04-20 21:46:44
@TerpFan - 我的代码允许您选择正确的输入编码,所以如果您知道该输入的编码,它应该适用于您。如果不提供编码类型,那么它应该是您的默认阅读编码。我希望我的回答能帮助你。如果是这样,请接受我的回答(点击我答复旁边的数字旁边的复选标记 - 它会将颜色更改为绿色)。谢谢你,祝你好运! – 2012-04-20 21:49:54
谢谢。由于我使用HTML文件,我能够先打开并找到编码,然后重新打开它!这是关键.....我假设perl在第一个palce中正确打开文件... \t if($ fileline =〜m/charset =(\ S +)\“/){ \t \t $ charset = $ 1 ; – TerpFan 2012-04-23 03:34:15