0

我正在使用 QBXML 与 Quickbooks 集成。我正在运行客户查询,Quickbooks 返回的 XML 似乎包含无效字符 (!)。

查看 quickbooks 返回的源 XML,我可以看到无效字符(出于隐私原因实际命名已更改,但我留下了有问题的字符):

<Contact>Ongél Davabond</Contact>

当我尝试解析 XML(使用 PHP XML 解析器,从 xml_parser_create() 开始)时,我收到一条无效字符消息。

我注意到 XML 标头只是:

<?xml version="1.0" ?>

我试着用 preg_replace

<?xml version="1.0" encoding="utf-8" ?>

但这没有任何区别。

鉴于我无法更改接收 XML 的方式,我该如何最好地处理它?有没有办法让 PHP XML 解析器接受这样的字符?PHP 是否有办法将任何无效字符转换为它们的 &#nnn; 等价物,而不影响 XML 结构,或者我是否需要逐个字符地检查整个 XML 字符以查找无效字符并手动替换它们?我不知道将来会出现什么其他无效字符,所以我正在寻求一种一次性处理所有可能性的方法,而不是仅仅修复这个“é”字符。

4

1 回答 1

1

虽然我期待 UTF-8,但返回的 XML 是 ISO-8859-1。强制 ISO-8859-1 编码解决了这个问题。

于 2013-10-30T17:00:06.657 回答