欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

php中文乱码问题和MySql出现中文乱码的解决方法

程序员文章站 2022-06-10 19:42:15
...
php教程中文乱码问题和mysql教程出现中文乱码的解决方法






$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("

");
while($row = mysql_fetch_object($rs)){
print ($row->name.":".$row->age."
");
}
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;可以一次性设置客户端的所有字符集。