mysql是UTF8编码,json.php是UTF8编码,在数据库中,直接查询表,里面的中文都能正确显示。在php程序中,mysql_query("set names utf8");使用这个设置了编码。urldecode(json_encode($newData))这个是生成了JSON。但是中文不出来啊,结果如下:nutrition":"\u7c73\u996d\u7684\u4e3b\u8981\u6210\u5206\u662f\u78b3\u6c34\u5316\u5408\u7269\uff0c\u7c73\u996d\u4e2d\u7684\u86cb\u767d\u8d28\u4e3b\u8981\u662f\u7c73\u7cbe\u86cb\u767d\uff0c\u6c28\u57fa\u9178\u7684\u7ec4\u6210\u6bd4\u8f83\u5b8c\u5168\uff0c\u4eba\u4f53\u5bb9\u6613\u6d88\u5316\u5438\u6536\u3002\u7cd9\u7c73\u996d\u4e2d\u7684\u77ff\u7269\u8d28\u3001\u81b3\u98df\u7ea4\u7ef4\u3001B\u65cf\u7ef4\u751f\u7d20(\u7279\u522b\u662f\u7ef4\u751f\u7d20B1)\u542b\u91cf\u90fd\u8f83\u7cbe\u7c73\u7c73\u996d\u4e2d\u7684\u8981\u9ad8\u3002","consumption_effect":"\u5927\u7c73\u6027\u5e73\u3001"上面这个就是中文字符的结果。怎么解决?

解决方案 »

  1.   

    中文json本来就是以UNICODE编码的字符串表示。
      

  2.   

    百度搜索第一条,你可看到答案。json 中文 编码 PhpNewnew site:csdn.net
      

  3.   

    那我使用JS如何得到正确的中文呢?我知道EVAL转换成数组以后,在JS里面,直接可以显示中文了,可是,我是因为要看测试数据方便些,所以,才发了这个贴子。
      

  4.   

    。。这是JSON啊,大哥,JS就解开JSON自然就看到UTF8编码的中文了。
      

  5.   

    楼主,能否共享一下php将mysql中查询的结果如何转换成json格式的呢?
      

  6.   

    晕,我google json_decode site:w3school.com.cn竟然没搜到……
      

  7.   

    <?php
    //建立数据库连接
    $con = mysql_connect("localhost","ty5d","cYf5MeF4433FjdF");
    if(!$con){die('数据库无法连接:'.mysql_error());}//选择数据库
    mysql_select_db("newwsq1",$con);
    //设置字符集
    mysql_query("set names utf8");$typeid=$_REQUEST["typeid"];
    $page=$_REQUEST["page"];//可以指定字段名称来生成JSON。不需要的JSON没有必要生成。
    $query="select * from pre_tools_food LIMIT 0,20";//前二十条
    $result=mysql_query( $query );//执行SQL语句//循环并将查询的数据存入数组
    while($row=mysql_fetch_assoc($result)){
        $response[]=$row;
    }//使用Foreach遍历数组 同时使用urlencode处理 含有中文的字段
    foreach($response as $key => $value){
        $newData[$key]=$value;
    }//echo "大家好";//显示正常
    $myjson=json_encode($newData);
    //$myjson=preg_replace("#\\\u([0-9a-f]{4})#ie", "iconv('UCS-2BE', 'UTF-8', pack('H4', '\\1'))", $myjson);
    echo $myjson;mysql_close($con);//关闭数据库链接
    ?>以上就是代码,注释很清晰,需要的拿去。看来没办法直接显示中文了?那就这样吧,谢谢各位。