如何找到文件的字符编码?

时间:2014-09-03 22:20:11

标签: encoding character-encoding character code-map

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

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

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

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

问题:

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

    perl -MXML :: LibXML -e&#39; XML :: LibXML-&gt; load_xml(location =&gt;&#34; 2.xml&#34;)&#39; 2.xml:1364531:解析器错误:输入不正确UTF-8,表示编码! 字节:0xBF 0x30 0x39 0x20                      女性出现于09年春季                                                                        ^

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

1 个答案:

答案 0 :(得分:1)

您可以使用encachardet

您可能需要自己编译enca。至于chardet,您的repo可能包含一个打包的脚本。

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