PHP从Mysql查出来的数据转换成json格式中文乱码怎么解决

$conn=connectDb();
$result=mysql_query('select * from users ORDER by id DESC ');
$datacount=mysql_num_rows($result);
for ($i=0;$i<$datacount;$i++){
$result_arr=mysql_fetch_array($result);
$json=array(
'id'=>$result_arr['id'],
'name'=>$result_arr['name'],
'$age'=>$result_arr['age']
);
$id=$result_arr['id'];
$name=$result_arr['name'];
$age=$result_arr['age'];
echo "<tr><td>$id</td><td>$name</td><td>$age</td><td><a href='edituser.php?id=$id'>修改</a><a href='deletuser.php?id=$id'>删除</a></td></tr>";
}
echo json_encode($json);

解决办法是在使用json_encode之前把字符用函数urlencode()处理一下,然后再json_encode,输出结果的时候在用函数urldecode()转回来。具体如下:

//urlencode处理
function json_array($obj) {
    foreach($obj as $key => $value) {
        if(is_array($obj[$key])) {
            $obj[$key] = json_array($obj[$key]);
        }else{
            $obj[$key] = urlencode($value);
        }
    }
    return $obj;
}
//urldecode解密转换为中文字符
function _json($obj) {
    return urldecode(json_encode(json_array($obj)));
}

echo _json($json);//$json为你要输出的json数组

此处递归调用是为了处理多维数组······

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-05-16
在PHP5.4, Json新增了一个选项: JSON_UNESCAPED_UNICODE, 故名思议, 就是说, Json不要编码Unicode。echo json_encode($json, JSON_UNESCAPED_UNICODE);
找了篇文档可以参考下:http://blog.csdn.net/bjash/article/details/9834497

PHP从Mysql查出来的数据转换成json格式中文乱码怎么解决
解决办法是在使用json_encode之前把字符用函数urlencode()处理一下,然后再json_encode,输出结果的时候在用函数urldecode()转回来。具体如下:\/\/urlencode处理function json_array($obj) { foreach($obj as $key => $value) { if(is_array($obj[$key])) { $obj[$key] = json_array...

PHP查询MYSQL,返回JSON格式?
执行查询并获取结果:•使用MySQLi或PDO连接数据库并执行SQL查询。•获取查询结果集。处理结果集:•如果结果集是以对象形式获取的,可以直接使用json_encode()函数将其转换为JSON字符串。•如果结果集是以数组形式获取的,则需要先将每一行数据转换为关联数组或对象。转换为JSON字...

mysql 一对多查询中返回成json 格式数据
首先创建示例表与数据。执行一对多查询并返回JSON格式数据,使用JSON_ARRAYAGG与JSON_OBJECT函数将多个订单数据整合为JSON数组,同时包含用户信息与订单信息。查询结果示例展示,每个用户的所有订单信息组成JSON数组,通过orders列返回。在Spring Boot中执行此查询并转为JSON格式返回前端。具体实现依赖所用持久层框...

PHP从mysql中取出多组数据 如何加入数组中并转成JSON数组
首先定义一个数组,然后遍历数据表,把相应的数据放到数组中,最后通过json_encode()转化数组 json_encode() 函数的功能是将数值转换成json数据存储格式。例如:<?php \/\/定义一个数组,用于保存读取到的数据 array = array();query = mysql_query("select * from table");\/\/遍历数据表 while($rows...

mysql数据库中的中文不能转化为json
注意有三个编码要设置:数据库存中文的编码,改成utf-8;读数据库时,连接方式编码,改成utf-8;显示页面的ecoding编码,改成utf-8。

php查找MySQL中某张表的数据,如何封装为json数组?
sql = "SELECT FROM table1 ";\/\/查询表table1 result = mysqli_query($conn,$sql);\/\/将表与数据库连接 output = [];\/\/用于盛放查询到的商品 while(($row=mysqli_fetch_assoc($result))!==null){ output[]= row;} echo json_encode($output);\/\/输出查询到的数据 ...

有没有大佬知道Mysql 查询结果如何转成json字符串输出?
MySQL数据库:5.7.20-log MySQL Community Server (GPL)名词:QEP: Query Execution Plan,查询执行计划。语法:EXPLAIN [explain_type] {explainable_stmt } explain_type:{ EXTENDED | PARTITIONS | FORMAT = format_name} format_name:{ TRADITIONAL | JSON} explainable_stmt:{ SELECT statement |...

怎么在jsp文件中把已经读取到的MySQL数据库数据存为一个json格式字符串...
查询一条数据:<%JSONObjectjsonObj=newJSONObject()jsonObj.put(\\"name\\n之前问了之后有一位大哥回答了说“用js给后台的servlet发送一个ajax的请求,在servlet中去请求数据库的数据,并把数据拼接成json格式返回”,还发了个代码,但是完全看不懂,而且我没用过servlet,不知道这是什么。网上找到的在...

php将数据库查询的数据转换为json格式,为什么返回的格式前面有0 1 2...
function my_json_sql($my_sql){$result = mysql_query($my_sql);\/\/判断执行结果if($result && mysql_affected_rows()>0){\/\/先声明一个空数组$arr=array();\/\/循环处理结果while($row = @mysql_fetch_assoc($result)){$arr[]=$row;}return $arr;}return false;} ...

怎么将PHP查询的多条数据封装成数组 并且转为json的数据格式
正常来说,循环赋值是没问题的,你需要看下,你的sql在数据库中能查出几条结果,最好数组还是这样定义$arr = array();而不是$arr[] = array();简单的测试你数据是否只有一条的方法是在while里边打印个东西 echo $sql;\/\/打印下你的sql语句,用phpmyadmin执行下看结果 cnt=1;while($row = $db...

相似回答