返回JSON结果的Æøå - 数据看起来不像它应该的样子

时间:2015-08-12 13:58:59

标签: php json wordpress utf-8 zoho

我使用带有以下代码的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而且我完全不在了?

1 个答案:

答案 0 :(得分:1)

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

如果你不想逃脱utf-8角色,这个问题与你有关:Why does the PHP json_encode function convert UTF-8 strings to hexadecimal entities?

从我看到的一切看来,一切似乎都很好。虽然,你提供给我们的字符串似乎是troncated但我想这是你的错误。