PHP——json_encode 中文乱码的解决方法

6 篇文章 0 订阅
1.乱码截图:

在这里插入图片描述

2.php文件
<?php
header("Content-type:text/json;charset=utf8");
//定义参数
//表单验证
if(empty($id)){
    //连接数据库
    $con = mysql_connect("localhost","root","root");
    //设置数据库字符集  
    mysql_query("SET NAMES UTF8");
    //查询数据库
    mysql_select_db("mysql", $con);
    $result = mysql_query("SELECT * FROM lyj WHERE id between 0 and 100");
    $results = array();
    while($row = mysql_fetch_assoc($result))
    {
        $results[] = $row;
        // 将数组转成json格式
        echo json_encode($results);
    }
    //关闭数据库连接
    mysql_close($con);
    
}else{
    echo "[{\"result\":\"表单为空...\"}]";
}
?>
3.错误原因:PHP的json_encode处理中文的时候, 中文会被编码, 变成不可读的, 类似”\u***”的格式
4.解决方法:

方法一: 使用JSON_UNESCAPED_UNICODE参数

echo json_encode( '打开播报' ); // "\u6253\u5f00\u64ad\u62a5"
echo json_encode( '打开播报', JSON_UNESCAPED_UNICODE ); // "打开播报"

方法二:先把汉字urlencode转码、再json_encode; 然后urldecode解码

echo $cmd = '打开播报'; // 打开播报
echo $cmd = urlencode( $cmd ); // "%E6%89%93%E5%BC%80%E6%92%AD%E6%8A%A5"
echo $cmd = json_encode( $cmd ); // "%E6%89%93%E5%BC%80%E6%92%AD%E6%8A%A5"
echo $cmd = urldecode( $cmd ); // "打开播报"
5.修改后的php文件:
<?php
header("Content-type:text/json;charset=utf8");
//定义参数
//表单验证
if(empty($id)){
    //连接数据库
    $con = mysql_connect("localhost","root","root");
    //设置数据库字符集  
    mysql_query("SET NAMES UTF8");
    //查询数据库
    mysql_select_db("mysql", $con);
    $result = mysql_query("SELECT * FROM lyj WHERE id between 0 and 100");
    $results = array();
    while($row = mysql_fetch_assoc($result))
    {
        $results[] = $row;
        // 将数组转成json格式
        echo json_encode($results, JSON_UNESCAPED_UNICODE);
    }
    //关闭数据库连接
    mysql_close($con);
    
}else{
    echo "[{\"result\":\"表单为空...\"}]";
}
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值