使用 XML::LibXML 整理 HTML 时防止编码
Prevent encoding when tidy HTML using XML::LibXML
我正在使用以下代码整理一段未整理的 HTML 代码。
perl -Mutf8 -MXML::LibXML -E'
my $filename = "1.html";
open $fh, "<", $filename;
binmode $fh;
my $dom = XML::LibXML->load_html(
IO => $fh,
recover => 1,
suppress_errors => 1,
huge => 10000000,
);
say $dom->toString();
' > tidy.html
未整理的 HTML 代码(缺少 </p>
结束标记):
1.html:
<p>aΩ<span>test</span>
可以看到,<p>
标签中有一个特殊字符Ω
,经过整理后,Ω
编码为Ω
如下(整理 HTML 个代码):
tidy.html:
<html><body><p>aΩ<span>test</span></p></body></html>
我可以保留 Ω
的原始形式,而不是整洁输出中的编码形式吗?
或者是否有任何其他替代方法来完成不会对特殊字符进行编码的整洁过程?
问题和你想的不太一样
HTML 解析器将输入视为标准指定的 Latin1,但您的输入文件实际上是 UTF-8 格式。要使其正常工作,您需要 declare the correct encoding,例如
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
我正在使用以下代码整理一段未整理的 HTML 代码。
perl -Mutf8 -MXML::LibXML -E'
my $filename = "1.html";
open $fh, "<", $filename;
binmode $fh;
my $dom = XML::LibXML->load_html(
IO => $fh,
recover => 1,
suppress_errors => 1,
huge => 10000000,
);
say $dom->toString();
' > tidy.html
未整理的 HTML 代码(缺少 </p>
结束标记):
1.html:
<p>aΩ<span>test</span>
可以看到,<p>
标签中有一个特殊字符Ω
,经过整理后,Ω
编码为Ω
如下(整理 HTML 个代码):
tidy.html:
<html><body><p>aΩ<span>test</span></p></body></html>
我可以保留 Ω
的原始形式,而不是整洁输出中的编码形式吗?
或者是否有任何其他替代方法来完成不会对特殊字符进行编码的整洁过程?
问题和你想的不太一样
HTML 解析器将输入视为标准指定的 Latin1,但您的输入文件实际上是 UTF-8 格式。要使其正常工作,您需要 declare the correct encoding,例如
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>