json返回乱码

clipboard.png

<?php
header("Content-Type:text/html;   charset=utf-8");
$arr = Array(
    'subscribe' => 1,
    'openid' => 'obGpMw9yTS9ZMIPCRwQ7Xn0nKenU ',
    'nickname' => 'Duang ',
    'sex' => 1,
    'language' => 'zh_CN',
    'city' => '武汉',
    'province' => '湖北',
    'country' => '中国',
    'headimgurl' => 'http://wx.qlogo.cn/mmopen/u2NhHPqCsrcW1HvGHEcjfJuWZwBKKLf3q9YTcQictC7ibLhiaWqU7gJgEx6s8kYoxX7OtRIhIDJq1HGaHES8Ml9iagScibJyGEKju/0',
    'subscribe_time' => 1481461011,
    'remark' => '140554455-\u54e6\u54e6',
    'groupid' => 109,
    'tagid_list' => Array('0' => 109));
echo "json返回的数据";
echo "<br>";
print_r($arr);
echo "<br>";
echo "<br>";
echo '处理过的json返回数据';
$a = preg_replace("#\\\u([0-9a-f]{4})#ie", "iconv('UCS-2BE', 'UTF-8', pack('H4', '\\1'))", $arr);
print_r($a);

微信返回的用户数据有一部分乱码,处理过以后可以更正,但是貌似最后一个数组不能读取了而且还报了一个提示,有没有什么完美的办法

以下是移动用户分组的代码

/*移动用户分组*/
function move_group($openid, $groupid)
{
    $url = "https://api.weixin.qq.com/cgi-bin/groups/members/update?access_token=" . $this->access_token;
    $group = array("openid" => $openid, "to_groupid" => $groupid);
    $jsonStr = json_encode($group);
    $retu = $this->https_request($url, $jsonStr);
    return $retu;
}

//    http://www.bubuko.com/infodetail-1648797.html
private function https_request($url, $data = null)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)) {
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
阅读 4k
2 个回答

这个不算是乱码吧,是正常的 unicode 吧。

你正常操作就行,或者你就在读取的时候转一下。比如 js 是这样应该可以:

text='\u54e6'; // Chrome dev-tool 直接返回 '哦'
JSON.stringify(text) // => 哦

php 直接 :

json_decode($response); // 直接读取试试

这是通过json encode编码过的,就是为了防止乱码,你用json_decode解码下就可以了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题