2013-08-21 54 views
1

我想打印一個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>&#xFF26;&#xFF35;&#xFF2C;&#xFF2C; &#xFF37;&#xFF29;&#xFF24;&#xFF34;&#xFF28;</xml> 

非常,非常醜陋,難以閱讀(除非在瀏覽器或東西看)。

如何獲取文檔以打印真實字符並獲得utf-8(或任何其他編碼)聲明?

回答

3

由XML返回的對象類型::的libxml :: Parser是XML ::的libxml ::文獻,其具有setEncoding方法:

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

現在腳本打印這樣的:

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

XML的默認編碼是不是UTF-8?奇怪的。 – ikegami

+0

是的,我不知道爲什麼它是這樣的。如果它在原始解析字符串中有一個utf-8編碼聲明,它可能會有所不同。 –

相關問題