我正在使用QBXML与Quickbooks集成。我正在运行客户查询,Quickbooks返回的XML似乎包含无效字符(!)。
查看quickbooks返回的源XML,我可以看到无效字符(出于隐私原因,实际命名已更改,但我留下了相关字符):
<Contact>Ongél Davabond</Contact>
当我尝试解析XML时(使用PHP XML解析器,从xml_parser_create()开始),我收到一个无效的字符消息。
我注意到XML标题只是:
<?xml version="1.0" ?>
我尝试使用
进行preg_replacing<?xml version="1.0" encoding="utf-8" ?>
但这没有任何区别。
鉴于我无法改变我收到XML的方式,我如何才能最好地处理它?有没有办法让PHP XML解析器接受这样的字符? PHP是否有办法将任何无效字符转换为&amp; #nnn;在不影响XML结构的情况下,我是否需要逐个查找无效字符并手动替换它们?我不知道将来会出现什么其他无效字符,所以我想要一次性处理所有可能性,而不是仅仅修复这个'é'字符。
答案 0 :(得分:1)
虽然我期待UTF-8,但返回的XML是ISO-8859-1。强制ISO-8859-1编码解决了这个问题。