好的,我希望有人可以提供帮助,因为我无法找到解决方案。
在数据库中,客户设法从不同的字符集导入或以其他方式添加字符数据,例如:
<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 字符串?
接下来的事情是,格式错误并不意味着编码问题(但它可以)。只要您不共享问题的根源(理想情况下,在文本形式旁边以及十六进制转储),对于当前的信息,我就没有太多建议可以给出