首页 >后端开发 >php教程 >为什么PHP 处理数据库 读出"张三"的编码而不是 汉字?

为什么PHP 处理数据库 读出"张三"的编码而不是 汉字?

WBOY
WBOY原创
2016-06-23 13:55:071087浏览


    $con = mysql_connect("localhost","root","1234");  
    mysql_select_db("test",$con);  

mysql_query("set names utf8"); 
mysql_query("set character_set_client=utf8"); 
    mysql_query("set character_set_results=utf8");


    $q=mysql_query("SELECT * FROM people");  
    while($e=mysql_fetch_assoc($q)){
        $output[]=$e;  }
        print(json_encode($output));  
        mysql_close();  
?>  



输出结果:
[{"id":"10","name":"John","sex":"1","birthyear":"1979"},{"id":"11","name :"\u5f20\u4e09","sex":"1","birthyear":"1989"}]

为什么不是 张三


回复讨论(解决方案)

因?你json_encode了,中文??未union??

print(json_encode($output)); 
改成
print($output); 

如果你json_encode后也想看到中文,可以?考我之前?的文章: http://blog.csdn.net/fdipzone/article/details/28766357

json_encode 只接受 utf-8 编码的数据
json_encode 在做 json 编码时,会将多字节的 utf-8 字符转换成双字节的 unicode 编码的实体形式
这样在任何环境中bouquet不会因编码的原因造成数据的失真
json 数据格式主要用于与 js 通讯,而浏览器会将任何编码的数据转换成其工作字符集 unicode
所以,json_encode 的转码工作有利于减轻浏览器的压力

    $con = mysql_connect("localhost","root","1234");  
    mysql_select_db("test",$con);  

mysql_query("set names utf8"); 
mysql_query("set character_set_client=utf8"); 
    mysql_query("set character_set_results=utf8");


    $q=mysql_query("SELECT * FROM people");  
    while($e=mysql_fetch_assoc($q)){
        $output[]=$e;  }
        print(json_encode($output));  
        mysql_close();  
?>  



输出结果:
[{"id":"10","name":"John","sex":"1","birthyear":"1979"},{"id":"11","name :"\u5f20\u4e09","sex":"1","birthyear":"1989"}]

为什么不是 张三





为什么我重装了wamp后, 又变成了 乱码, 反而倒退了? 请问上面的代码哪里有问题么?还是有哪个文件要配置?

在哪里看到有乱码?

在哪里看到有乱码?


莫名其妙的没有乱码了。。  现在是解码出问题了

解码出了什么问题?

解码出了什么问题?


谢谢版主,刚解决了解码的问题,为了使得PHP在浏览器输出时候,能显示中文,我在最前面加入了 echo "";  原来这句话也是被android 接收了。是不是通过Php打印出的东西都被发送给了android客户端?

是的,php 打印的任何内容都被发往客户端

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn