打印实际字符而不是NCR

时间:2013-08-21 02:16:27

标签: xml perl character-encoding xml-libxml

我想打印一个XML文档,而不会将包含在其中的所有unicode减少到丑陋的NCR。这是一个示例:

use XML::LibXML;
my $parser = XML::LibXML->new();
my $doc = $parser->load_xml(string => '<xml>FULL WIDTH</xml>');
print $doc->toString();

这将打印以下内容:

<?xml version="1.0"?>
<xml>&#xFF26;&#xFF35;&#xFF2C;&#xFF2C; &#xFF37;&#xFF29;&#xFF24;&#xFF34;&#xFF28;</xml>

非常,非常丑陋且难以阅读(除非在浏览器或其他内容中查看)。

如何让文档打印真实字符,并使用utf-8(或其他任何编码)声明?

1 个答案:

答案 0 :(得分:3)

XML :: LibXML :: Parser返回的对象类型是XML :: LibXML :: Document,它有setEncoding方法:

$doc->setEncoding('utf-8');

现在脚本打印出来:

<?xml version="1.0" encoding="utf-8"?>
<xml>FULL WIDTH</xml>