如何使 Perl 的 XML::Libxml 序列化程序使用 utf-8 编码?

How to make Perl's XML::Libxml serializer to use utf-8 encoding?

提问人:lmocsi 提问时间:2/12/2019 更新时间:2/12/2019 访问量:282

问:

我想用 XML::LibXML 序列化 xml,但它总是将 utf-8 字符转换为 html 表示形式:我得到 á从“á”等...
我怎样才能让它改用utf-8?

use strict;
use XML::LibXML;
use utf8;

my $str = '<item><name>árvíztűrő tükörfúrógép</name></item>';
my $dom = XML::LibXML->load_xml(string => $str);

print $str."\n";
print $dom->serialize(1);
XML Perl 序列化 UTF-8

评论


答:

5赞 ikegami 2/12/2019 #1
my $str = '<?xml version="1.0" encoding="UTF-8"?><item><name>árvíztűrő tükörfúrógép</name></item>';
my $doc = XML::LibXML->load_xml( string => $str );
print $doc->serialize(1);

my $str = '<item><name>árvíztűrő tükörfúrógép</name></item>';
my $doc = XML::LibXML->load_xml( string => $str );
$doc->setEncoding("UTF-8");    
print $doc->serialize(1);