1

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

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

  <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)
4

1 回答 1

0

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

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

接下来的事情是,格式错误不一定意味着编码问题(但它可以)。只要您不分享问题的根源(最好在 text-form 旁边以及hex-dump旁边),对于我要说的当前信息,没有太多建议可以提供。

于 2012-05-02T10:31:20.950 回答