Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
perl XML::LibXML utf8编码_Xml_Perl_Utf 8 - Fatal编程技术网

perl XML::LibXML utf8编码

perl XML::LibXML utf8编码,xml,perl,utf-8,Xml,Perl,Utf 8,我使用的是perl模块XML::LibXML LibXML get字符串,它包含使用utf8编码的整个XML文件。 我使用findnodes和textContent从xml获取信息。 但是,当我试图使用charset=UTF-8将它们打印到HTML页面时,会出现一些不好的字符,比如“�". 当我在html页面的头部不使用charset=UTF-8时,它是正确的,但我手动打印的页面的其余部分是错误的。 你能帮我弄清楚吗 感谢您的建议。确保您的脚本顶部有: use utf8; binmode $_,

我使用的是perl模块XML::LibXML

LibXML get字符串,它包含使用utf8编码的整个XML文件。 我使用findnodes和textContent从xml获取信息。 但是,当我试图使用charset=UTF-8将它们打印到HTML页面时,会出现一些不好的字符,比如“�". 当我在html页面的头部不使用charset=UTF-8时,它是正确的,但我手动打印的页面的其余部分是错误的。 你能帮我弄清楚吗


感谢您的建议。

确保您的脚本顶部有:

use utf8;
binmode $_, ":utf8" for qw/STDOUT STDIN STDERR/;

应该是,
textContent
以其“解码”形式(Unicode代码点)返回文本。文件句柄需要字节,因此您需要将文本编码为字节。您可以使用

use open ':std', ':encoding(UTF-8)';

binmode
语句最好写为
useopenqw/:std:utf8/
,尽管它也为程序中的任何其他
open
语句设置默认模式。它工作正常,但当我在自己的模块顶部使用它,然后在某些脚本中使用该模块时,脚本会自动使用它,页面的其余部分是wro有没有办法告诉脚本-不要使用“useopen”:std',':encoding(UTF-8)';“希望你能理解我的问题。