php中文乱码问题和MySql出现中文乱码的解决方法
class="brush:php;"><html> <head> <title></title> </head> <body> <?php $mysql_server_name='localhost'; $mysql_username='root'; $mysql_password='000000'; $mysql_database='lib'; $conn=mysql_connect($mysql_server_name,$mysql_username,$mysql_password,$mysql_database); $sql="select name,age from mytb"; print($conn); $rs=mysql_db_query("lib","select * from mytb",$conn); print(" <br>"); while($row = mysql_fetch_object($rs)){ print ($row->name.":".$row->age."<br>"); } mysql_close($conn);
显示如下:
resource id #1
dd:54 ddd:8 ??:15 ???:25 ??:32
mysql编码:utf8,gbk都试过了。mysql font 和命令行显示都正确。
问题补充:
乱码:
???:15 ???:25 ??:32
这几行,数据库教程里的值是汉字.显示出来的是问号.
解决办法:
在$rs=mysql_db_query("lib","select * from mytb",$conn);
前面加上
mysql_query("set names gb2312");或者mysql_query("set names gbk");
下面看一下关于解决乱码的方法
.gb2312,gbk,utf8等支持多字节编码的字符集都可以储存汉字,gb2312中的汉字数量远少于gbk,而gb2312,gbk等都可在utf8下编码。
二.用命令show variables like 'character_set_%';查看当前字符集设定:
mysql> show variables like 'character_set_%'; +--------------------------+--------+ | variable_name | value | +--------------------------+--------+ | character_set_client | gb2312 | | character_set_connection | gb2312 | | character_set_database | gb2312 | | character_set_filesystem | binary | | character_set_results | gb2312 | | character_set_server | latin1 | | character_set_system | utf8 | +--------------------------+--------+ 7 rows in set (0.02 sec)
(这里设置的字符是gb2312)
显示中文乱码主要有两个设置:character_set_connection 和character_set_results ,
如果你的这两个设置不支持中文编码,就会出现乱码,只要:set character_set_results =gbk;就设置中文编码了。
三.set names charset_name;可以一次性设置客户端的所有字符集。
本文链接:http://www.phprm.com/database/36170.html
收藏随意^^请保留教程地址.