我完全迷失了编码问题,我不知道发生了什么,问题究竟是什么以及如何解决它。
基本上我只是尝试从Zip文件中读取HTML文件,解析它然后将片段输出到XML。现在,我从解析器中获取的文本发生了一些时髦的事情。
解析HTML时,只有当我写入屏幕时才会获得á
而不是空格。如果我将它保存在变量中并写入文件,它在文件中看起来很好。然而,即使它在XML中看起来是正确的,但是我的PHP解析器无法解析该XML,IE似乎也不喜欢它。
我必须先mb_convert_encoding($xmlcontent, "ASCII");
所以我可以在PHP中解析XML。
知道我的问题是什么吗?
使用Perl从.tar.gz
文件中提取HTML
my $tar = Archive::Tar->new;
$tar->read("myfile.tar.gz");
$tar->extract_file('index.html', 'output.html');
加载HTML,这就是它开始变得时髦的地方,我的输出就像Numberáofásourceálines
my $tree = HTML::TreeBuilder->new;
$tree->parse_file('output.html') or die $!;
$tree->elementify;
写入XML
my $output = new IO::File(">output.xml");
my $writer = new XML::Writer(OUTPUT => $output, DATA_MODE => 1,DATA_INDENT => 2);
答案 0 :(得分:1)
如果将其写入文件时看起来正确并且在将其写入终端时出错,则听起来您的终端期望编码错误。检查终端设置。'
另外,请参阅Jon Rockway对"Why does modern Perl avoid UTF-8 by default?"的回答。使用编码,您必须将输入转换为正确的编码并将输出转换为正确的编码。查看数据的所有内容都需要知道您正在使用的编码。
答案 1 :(得分:0)
我想我只是通过在解析它之前在html上处理它来修复它,感谢所有伟大的指针!
s/\ \;/ /g;