首页 > php开发 > php中文乱码问题和MySql出现中文乱码的解决方法

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

先看一下实例代码:

<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);//开源代码phprm.com 
$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/develop/fs5369.html

转载随意,但请附上文章地址:-)

标签:php中文乱码 mysql中文乱码

相关文章

发表留言