为了账号安全,请及时绑定邮箱和手机立即绑定

    各位亲爱的小伙伴们,到目前为止有许多小伙伴们问我json_encode函数传递中文的话,输出后是乱码的,针对这个问题我觉得有必要做一个解释:

    其实json_encode对中文那不是乱码,只是json_encode会将中文转换为unicode编码,所以输出后是这个编码,但不影响我们使用,我们json_decode后就是正常的值了,但如果你想在输出json_encode的时候也是中文的话,其实有一个办法,如下:

echo urldecode(json_encode(urlencode("JSON中文输出解决方案")));

最后祝:学习愉快!


正在回答

11 回答

膜拜一下

1 回复 有任何疑惑可以回复我~
#1

singwa 提问者

非常感谢!
2015-01-07 回复 有任何疑惑可以回复我~

为什么返回码的message返回的是一串数字而不是中文呢?

0 回复 有任何疑惑可以回复我~

首先各方面统一都是utf-8编码,在接口输出页面 加个 header  charset下,如果只提供json方式,可以类似这样

header("content-type: application/json; charset=utf-8");

输出后就可以看到正常中文字符了

1 回复 有任何疑惑可以回复我~

最后的最后我还是用了一个别人重写的json_encode,才能输出正常的中文

0 回复 有任何疑惑可以回复我~
#1

Danmomo

都说是PHP5.4版本,你用PHP5.4以下的肯定不行
2015-10-27 回复 有任何疑惑可以回复我~

echo urldecode(json_encode(urlencode("JSON中文输出解决方案"))); PHP5.4版本的不行,并且数组还要遍历值才行,urlencode和urldecode都是对字符串编码、解码的。

PHP版本在5.4新增了一个功能就是JSON_UNESCAPED_UNICODE。看我代码

echo json_encode($result,JSON_UNESCAPED_UNICODE);

页面显示效果:{"code":200,"message":"返回成功","data":{"id":1,"name":"倾世皇","age":"109"}}

 

2 回复 有任何疑惑可以回复我~
#1

SunQuan

哥们不行呀,报错Use of undefined constant JSON_UNESCAPED_UNICODE - assumed 'JSON_UNESCAPED_UNICODE' in D:\phpDemo\app\response.php 怎么办?好急好急
2015-08-23 回复 有任何疑惑可以回复我~
#2

SunQuan

求回复,求帮助,谢谢谢谢
2015-08-23 回复 有任何疑惑可以回复我~
#3

wangzixue

这个简单
2016-03-17 回复 有任何疑惑可以回复我~
#4

逍遥的大虾

echo json_encode($result,JSON_UNESCAPED_UNICODE); 好用
2016-10-26 回复 有任何疑惑可以回复我~
查看1条回复

echo urldecode(json_encode(urlencode("JSON中文输出解决方案")));这句话放在我代码的哪里,请指导啊。在线等,急急急.....................

0 回复 有任何疑惑可以回复我~

require 'Json.class.php';
$arr=array(
 'id'=>1,
 'name'=>'倾世皇',
 'age'=>'109'
);
foreach($arr as $key=>$val){
 $arr[]=urlencode($val);
}
echo urldecode(json_encode($arr));//这里显示不乱码
AppTest::json(200,'返回成功',$arr);

 

header("content-type:text/html;charset=utf-8");
class AppTest{
 /**
  * $code  状态码
  * $message 提示信息
  * $data 返回数据
 */
 public static function json($code,$message='',$data=array()){
  //is_numeric检测变量是否数字或数字字符串
  if(!is_numeric($code)){
   echo  'error';
   exit();
  }
  $result=array(
   'code' => $code,
   'message' => $message,
   'data' =>$data
  );
  //json_encode生成json数据,json_decode对json数据编码
//  foreach($result as $key=>$val){
//   $result[]=urlencode($val);
//  }
  //var_dump($result);
  //echo json_encode($result);
  //echo urldecode(json_encode($result));
  exit();
 }
}

这边类里面的代码始终都是乱码

echo urldecode(json_encode(urlencode("JSON中文输出解决方案")));这句话没问题,但是urlencode能转array码?

 

 

0 回复 有任何疑惑可以回复我~

学习了,谢老师~

0 回复 有任何疑惑可以回复我~

赞一个

1 回复 有任何疑惑可以回复我~

学习了,谢老师~echo urldecode(json_encode(urlencode("JSON中文输出解决方案")));

2 回复 有任何疑惑可以回复我~
首页上一页12下一页尾页

举报

0/150
提交
取消
PHP开发APP接口
  • 参与学习       79185    人
  • 解答问题       599    个

APP通信接口技术,不得不掌握的法宝,学完之后你会受益良多

进入课程
意见反馈 帮助中心 APP下载
官方微信