关于php:???在返回的 JSON 结果中 – 数据看起来不像它应该的那样

??? in returned JSON result – the data doesn’t look like it’s supposed to

我使用 JSON 从 url 请求中获取了一些数据,代码如下:

1
2
3
4
5
$url = ‘https://recruit.zoho.com/ats/private/xml/JobOpenings/getRecords?authtoken=$at&scope=recruitapi’;
$request = new WP_Http;
$result = $request->request($url, $data = array());
$input = json_encode($result, true);
var_dump($input);

这段代码运行得非常好,只是输出的数据看起来很奇怪,例如:

1
2
"content-encoding":"gzip","vary":"Accept-Encoding","strict-transport-security":"max-age=15768000"},"body":"//u003C?xml version="1.0" encoding="UTF8" ?//u003E/
//u003Cresponse uri="
///ats///private///xml///JobOpenings///getRecords"//u003E//u003Cresult//u003E//u003CJobOpenings//u003E//u003Crow no="1"//u003E//u003CFL val="JOBOPENINGID"//u003E//u003C![CDATA[213748000001263043]]//u003E//u003C///FL//u003E//u003CFL val="Published in website"//u003E//u003C![CDATA[false]]//u003E//u003C///FL//u003E//u003CFL val="Modified by"//u003E//u003C![CDATA

经过一些研究,我意识到问题的一部分很可能是因为我请求的数据中有 ?|、?? 和 ?¥。其他人是这样解决问题的:

1
$input = json_encode(utf8_decode($result), true);

但是这给了我这个错误:

1
Warning: utf8_decode() expects parameter 1 to be string, array given in

我知道数组不是字符串,但我该怎么处理呢?它似乎对其他人有用,我不知道为什么。

谢谢。

编辑:

我在打印数据的开头注意到了这一点。

1
string(31486)"{"headers":{"server":"ZGS","date":"Wed, 12 Aug 2015 13:59:32 GMT","contenttype":"text///xml;charset=utf8"

这是否意味着它已经是 UTF-8 而我完全关闭了?


您在 $result 中收到的是一个 utf-8 字符串,它似乎代表某种 url。无论如何, json_encode 会将任何 unicode 字符转义为 //u008E 字符串。

如果您不想转义 utf-8 字符,这个问题与您相关:为什么 PHP json_encode 函数将 UTF-8 字符串转换为十六进制实体?

就我所见,一切似乎都运行良好。虽然,您提供给我们的字符串似乎是 troncated,但我想这是您的错误。


原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/php/268455.html

(0)
上一篇 2022年6月20日 09:50
下一篇 2022年6月20日 09:50

相关推荐

发表回复

登录后才能评论