好的,我希望有人可以提供帮助,因为我无法为此找到解决方案。
在数据库中,客户设法导入或以其他方式添加来自不同字符集的字符数据,例如:
<E2><80><99>
我相信这是UTF-16。
我的脚本的XML输出由于这些数据(从数据库中提取字符串,例如“description”字段并构建XML文件)而抛出错误。
XML解析错误:格式不正确 第20行,第50栏。
还有一些其他十六进制更长,例如&lt; 80&gt;&lt; 99&gt; (只是一个例子,我不确定这是否是一个真实的角色)。
如何使我的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)
答案 0 :(得分:0)
无论是什么:UTF-8,-16或-32 - 如果您在输出中选择其他编码,则必须 - 如果不同 - 首先重新编码输入以进行输出。
您在问题中明确指出您不知道输入编码究竟是什么。这是你需要清楚直线的一点,因为编码是元信息。你需要正确地知道它来处理字符串。根据您的共享,看起来输入是UTF-8编码的。您应该验证(How to detect malformed utf-8 string in PHP?)。
接下来的事情是,格式错误绝不意味着编码问题(但它可以)。只要你不分享问题的根源(理想情况下也是文本形式旁边with a hex-dump),对于我所说的当前信息,没有太多的建议。