由于 UTF 字符较长,XML 格式不正确


XML not well formed due to long UTF characters

好的,我希望有人可以提供帮助,因为我无法找到解决方案。

在数据库中,客户设法从不同的字符集导入或以其他方式添加字符数据,例如:

  <E2><80><99>

我相信这是 UTF-16。

我的脚本的 XML 输出由于此数据而引发错误(它从数据库中提取字符串,例如"描述"字段并构建 XML 文件)。

XML 分析错误:格式不正确第 20 行,第 50 列。

还有其他一些更长的十六进制,例如<80><99>(只是一个例子,我不确定这是否是一个实际字符)。

如何使我的 XML 文件有效,并缩小字符集或使其使用 UTF-32,如下所示:

  AddType "application/xml; charset=UTF-32" xml  (in .htaccess file along with filesmatch .xml)

  <?xml version='1.0' encoding='UTF-32' ?>   (placed in head of xml file)

不管是什么:UTF-8、-16 或 -32 - 如果你在输出中选择其他编码,你必须 - 如果它不同 - 首先重新编码你的输入输出。

您在问题中明确指出您不知道输入编码的确切含义。这是你需要弄清楚的一点,因为编码是元信息。您需要正确了解它才能处理字符串。从您共享的内容来看,输入似乎是 UTF-8 编码的。您应该验证(如何在 PHP 中检测格式错误的 utf-8 字符串?

接下来的事情是,格式错误并不意味着编码问题(但它可以)。只要您不共享问题的根源(理想情况下,在文本形式旁边以及十六进制转储),对于当前的信息,我就没有太多建议可以给出