0

我有一个不包含编码(字符集/字符编码/字符集/字符映射/代码集/代码页)的 XML。这是一个例子:

<?xml version="1.0" encoding="UTF-8"?>

XML 由 Perl 脚本生成,以下是摘录:

$fileName = $exportDirectory . $fileName;
open FILE, ">$fileName" or die;

问题:

  1. 在这种情况下,是否有一种简单的方法可以找到生成的 XML 的编码?
  2. 该脚本查询其他信息源(如 Oracle 数据库)并将数据附加到 XML 文件中。字符集编码是否由信息来源决定?还是通过打开文件操作?
  3. 一般来说,有没有一种简单的方法可以找到任意文件的编码?

我尝试使用 LibXML:

perl -MXML::LibXML -e 'XML::LibXML->load_xml(location => "2.xml")' 2.xml:1364531: 解析器错误:输入不正确的 UTF-8,表示编码!字节:0xBF 0x30 0x39 0x20 女性在春季 09 年到期 ^

我希望我提供了足够的信息。如果需要更多信息,请告诉我。

4

1 回答 1

1

您可以使用encachardet

您可能必须自己编译 enca。至于 chardet,你的 repo 有可能包含一个打包的脚本。

Enca 仅适用于欧洲语言,并要求您告诉它文件是哪种语言。Chardet 在区分用 8 位编码编码的欧洲语言方面做得更差,但在非欧洲文本方面表现更好。

于 2014-09-04T20:27:21.300 回答