打印实际的字符而不是NCR的
问题描述:
我想打印一个XML文档,而不会将其中包含的所有unicode都缩减为难看的NCR。这里有一个例子:打印实际的字符而不是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>FULL WIDTH</xml>
非常,非常丑陋,难以阅读(除非在浏览器或东西看)。
如何获取文档以打印真实字符并获得utf-8(或任何其他编码)声明?
答
由XML返回的对象类型::的libxml :: Parser是XML ::的libxml ::文献,其具有setEncoding
方法:
$doc->setEncoding('utf-8');
现在脚本打印这样的:
<?xml version="1.0" encoding="utf-8"?>
<xml>FULL WIDTH</xml>
XML的默认编码是不是UTF-8?奇怪的。 – ikegami
是的,我不知道为什么它是这样的。如果它在原始解析字符串中有一个utf-8编码声明,它可能会有所不同。 –