simplexml_load_string - 由于负载中的 unicode 字符导致解析错误
simplexml_load_string - parse error due to unicode characters in payload
我有一个问题 simplexml_load_string
由于来自数据库的 xml 有效负载出现解析错误,其中包含 unicode 字符。
我不知道如何让 php 阅读这篇文章并像往常一样使用 xml。在人们对提交的数据产生创意之前,代码一直运行良好。
不幸的是,我无法修改源数据,我必须处理收到的数据,给你一个想法,原始原始收据中破坏它的一个字段看起来像:
<FirstName></FirstName>
以前,通过使用简单的一行 :
解析 xml,代码工作正常
$xmlresult = simplexml_load_string($result, 'SimpleXMLElement',LIBXML_NOCDATA);
但是对于这些 unicode 字符,它只是错误。
根据我用来查看数据的内容,如果我转储原始有效负载,它可能看起来像:
<d83d><dc3a>
或<U+D83D><U+DC3A>
在堆栈上读了一点,似乎 DOM 可能有效,但也没有任何运气。
传入的有效载荷确实有 header:
?xml version="1.0" encoding="UTF-8"?>
数据来自
<data type="cdata"><![CDATA[<payload>
我完全不知所措,希望能在这里得到一些帮助,让我度过这个数据处理的难关。
我已经盯着这个看好几天了,似乎我没有尝试的一件事是用 utf8_encode 包装我的 curl 调用函数,如下所示:
$result = utf8_encode(do_curl($xmlbuildquery));
我的do_curl函数只是一个调用curl过程的单独函数,仅此而已。
这样做,我能够解析结果,而不是显示那些 unicode 字符,而是显示为
[firstname] => í ½í°º
(以上是print_r($result)的结果;在
之后
$xmldata = simplexml_load_string((string)$xmlresult->body->function->data);
有了它,xml 现在终于可以解析了。奇怪的是,这进一步激发了我的好奇心,因为这些信息是通过导入 mysql 数据库的 csv 提供的,当我查找相同的记录时,它显示为:
FirstName: ????
也设置了 table 类型:
FirstName
varchar(40) 整理 utf8mb4_unicode_ci 不为空,
这可能表明他们不是 utf8_encoding csv 的输出,与这个问题分开但很有趣。
最后,我的脚本又可以运行了!!
我有一个问题 simplexml_load_string
由于来自数据库的 xml 有效负载出现解析错误,其中包含 unicode 字符。
我不知道如何让 php 阅读这篇文章并像往常一样使用 xml。在人们对提交的数据产生创意之前,代码一直运行良好。
不幸的是,我无法修改源数据,我必须处理收到的数据,给你一个想法,原始原始收据中破坏它的一个字段看起来像:
<FirstName></FirstName>
以前,通过使用简单的一行 :
解析 xml,代码工作正常$xmlresult = simplexml_load_string($result, 'SimpleXMLElement',LIBXML_NOCDATA);
但是对于这些 unicode 字符,它只是错误。 根据我用来查看数据的内容,如果我转储原始有效负载,它可能看起来像:
<d83d><dc3a>
或<U+D83D><U+DC3A>
在堆栈上读了一点,似乎 DOM 可能有效,但也没有任何运气。
传入的有效载荷确实有 header:
?xml version="1.0" encoding="UTF-8"?>
数据来自
<data type="cdata"><![CDATA[<payload>
我完全不知所措,希望能在这里得到一些帮助,让我度过这个数据处理的难关。
我已经盯着这个看好几天了,似乎我没有尝试的一件事是用 utf8_encode 包装我的 curl 调用函数,如下所示:
$result = utf8_encode(do_curl($xmlbuildquery));
我的do_curl函数只是一个调用curl过程的单独函数,仅此而已。 这样做,我能够解析结果,而不是显示那些 unicode 字符,而是显示为
[firstname] => í ½í°º
(以上是print_r($result)的结果;在
之后
$xmldata = simplexml_load_string((string)$xmlresult->body->function->data);
有了它,xml 现在终于可以解析了。奇怪的是,这进一步激发了我的好奇心,因为这些信息是通过导入 mysql 数据库的 csv 提供的,当我查找相同的记录时,它显示为:
FirstName: ????
也设置了 table 类型:
FirstName
varchar(40) 整理 utf8mb4_unicode_ci 不为空,
这可能表明他们不是 utf8_encoding csv 的输出,与这个问题分开但很有趣。
最后,我的脚本又可以运行了!!