Æøå 在返回的 JSON 结果中 - 数据看起来不像它应该的那样
Æøå in returned JSON result - the data doesn't look like it's supposed to
我使用 JSON 从 url 请求中获取了一些数据,代码如下:
$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);
这段代码工作得非常好,只是输出的数据看起来很奇怪,例如:
"content-encoding":"gzip","vary":"Accept-Encoding","strict-transport-security":"max-age=15768000"},"body":"\u003C?xml version=\"1.0\" encoding=\"UTF-8\" ?\u003E\n\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
经过一些研究,我意识到部分问题很可能是因为我请求的数据中有 æ、ø 和 å。其他人是这样解决问题的:
$input = json_encode(utf8_decode($result), true);
但是这给了我这个错误:
Warning: utf8_decode() expects parameter 1 to be string, array given in
我知道数组不是字符串,但我还能如何处理它?它似乎对其他人有效,但我不明白为什么。
谢谢。
编辑:
我在打印数据的开头注意到了这一点。
string(31486) "{"headers":{"server":"ZGS","date":"Wed, 12 Aug 2015 13:59:32 GMT","content-type":"text\/xml;charset=utf-8"
这是否意味着它已经是 UTF-8 而我完全离开了?
您在 $result
中收到的是一个 utf-8 字符串,它似乎代表某种 url。无论如何,json_encode
会将任何 unicode 字符转义为 \u008E
字符串。
如果您不想转义 utf-8 字符,这个问题与您相关:Why does the PHP json_encode function convert UTF-8 strings to hexadecimal entities?
据我所知,一切似乎都很好。虽然,您提供给我们的字符串似乎被截断了,但我想这是您的错误。
我使用 JSON 从 url 请求中获取了一些数据,代码如下:
$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);
这段代码工作得非常好,只是输出的数据看起来很奇怪,例如:
"content-encoding":"gzip","vary":"Accept-Encoding","strict-transport-security":"max-age=15768000"},"body":"\u003C?xml version=\"1.0\" encoding=\"UTF-8\" ?\u003E\n\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
经过一些研究,我意识到部分问题很可能是因为我请求的数据中有 æ、ø 和 å。其他人是这样解决问题的:
$input = json_encode(utf8_decode($result), true);
但是这给了我这个错误:
Warning: utf8_decode() expects parameter 1 to be string, array given in
我知道数组不是字符串,但我还能如何处理它?它似乎对其他人有效,但我不明白为什么。
谢谢。
编辑:
我在打印数据的开头注意到了这一点。
string(31486) "{"headers":{"server":"ZGS","date":"Wed, 12 Aug 2015 13:59:32 GMT","content-type":"text\/xml;charset=utf-8"
这是否意味着它已经是 UTF-8 而我完全离开了?
您在 $result
中收到的是一个 utf-8 字符串,它似乎代表某种 url。无论如何,json_encode
会将任何 unicode 字符转义为 \u008E
字符串。
如果您不想转义 utf-8 字符,这个问题与您相关:Why does the PHP json_encode function convert UTF-8 strings to hexadecimal entities?
据我所知,一切似乎都很好。虽然,您提供给我们的字符串似乎被截断了,但我想这是您的错误。