由于umlaut字符,xml格式不正确。

由于umlaut字符,xml格式不正确。,xml,utf-8,character-encoding,diacritics,Xml,Utf 8,Character Encoding,Diacritics,我有一个带有声明的xml文件: <?xml version="1.0" encoding="utf-8"?> 当我用3个不同的编辑器打开它时,我得到了以下信息: 显然,有3种不同的表示法。记事本给了我正确的符号,记事本++给了我十六进制和emacs八进制代码 我有一个Perl代码,用于测试xml的格式是否正确。一旦xml具有这些umlaut字符,xml文件的格式就不正确,无法加载到我的数据库中。当我删除所有umlaut字符(和希腊符号等)时,xml文件格式良好,可以将文件导入

我有一个带有声明的xml文件:

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

当我用3个不同的编辑器打开它时,我得到了以下信息:

显然,有3种不同的表示法。记事本给了我正确的符号,记事本++给了我十六进制和emacs八进制代码

我有一个Perl代码,用于测试xml的格式是否正确。一旦xml具有这些umlaut字符,xml文件的格式就不正确,无法加载到我的数据库中。当我删除所有umlaut字符(和希腊符号等)时,xml文件格式良好,可以将文件导入数据库

我的目标是拥有一个xml文件,我可以将它导入到考虑到umlaut字符(和希腊符号等)的数据库中


这种行为的原因是什么?它是在创建xml时引起的吗?

在我看来,输入中的
ä
字符编码为xE4,这是iso-8859-1(和Windows CP-1252)中字符的表示形式,但在UTF-8中不是正确的表示形式。您的三个编辑器以不同的方式处理XML声明中声明的编码与实际编码之间的不一致

通过确保XML声明中命名的编码与字符的实际编码相匹配来修复此问题


这个问题可能是在最初创建XML文件时引入的,也可能是由随后更改字符编码的某个进程引入的,而没有更改XML声明以匹配新的编码。如果文件是由不支持XML的进程进行转码的,则可能会发生这种情况。

在我看来,输入中的
ä
字符编码为xE4,这是iso-8859-1(和Windows CP-1252)中字符的表示形式,但在UTF-8中不是正确的表示形式。您的三个编辑器以不同的方式处理XML声明中声明的编码与实际编码之间的不一致

通过确保XML声明中命名的编码与字符的实际编码相匹配来修复此问题

这个问题可能是在最初创建XML文件时引入的,也可能是由随后更改字符编码的某个进程引入的,而没有更改XML声明以匹配新的编码。如果文件是由一个不支持XML的进程进行转码的,则可能会发生这种情况