php MySQL中文乱码问题:
处理方法:set names utf8
[b]mysql.ini[/b]
[mysql]
default-character-set=utf8 //客户端的默认字符集
[mysqld]
default-character-set=utf8 //服务端的默认字符集
MySQL Cmd Line Client
mysql> [color=red]show variebles like "character_set_%";[/color]
Console:
character_set_client latin1
character_set_connection latin1
character_set_database utf8
character_set_results latin1
character_set_server utf8
character_set_system utf8
mysql_query("SET NAMES UTF8");
//该句话一定要放在数据库服务器连接语句【$connection=mysql_connect($db_host,$db_user,$db_psw)or die("连接服务器失败");】之后即可显示正常(只要数据库里信息的字符正常)。
再一次:
MySQL Cmd Line Client
mysql> show variebles like "character_set_%";
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_results utf8
character_set_server utf8
character_set_system utf8
看看这3个变量的作用:
信息输入路径:client→connection→server;
信息输出路径:server→connection→results。
换句话说,每个路径要经过3次改变字符集编码。以出现乱码的输出为例,server里utf8的数据,传入connection转为latin1,传入results转为latin1,utf-8页面又把results转过来。如果两种字符集不兼容,比如latin1和utf8,转化过程就为不可逆的,破坏性的。
注意:"SET NAMES UTF8"作用只是临时的,MySQL重启后就恢复默认了。
处理方法:set names utf8
[b]mysql.ini[/b]
[mysql]
default-character-set=utf8 //客户端的默认字符集
[mysqld]
default-character-set=utf8 //服务端的默认字符集
MySQL Cmd Line Client
mysql> [color=red]show variebles like "character_set_%";[/color]
Console:
character_set_client latin1
character_set_connection latin1
character_set_database utf8
character_set_results latin1
character_set_server utf8
character_set_system utf8
mysql_query("SET NAMES UTF8");
//该句话一定要放在数据库服务器连接语句【$connection=mysql_connect($db_host,$db_user,$db_psw)or die("连接服务器失败");】之后即可显示正常(只要数据库里信息的字符正常)。
再一次:
MySQL Cmd Line Client
mysql> show variebles like "character_set_%";
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_results utf8
character_set_server utf8
character_set_system utf8
看看这3个变量的作用:
信息输入路径:client→connection→server;
信息输出路径:server→connection→results。
换句话说,每个路径要经过3次改变字符集编码。以出现乱码的输出为例,server里utf8的数据,传入connection转为latin1,传入results转为latin1,utf-8页面又把results转过来。如果两种字符集不兼容,比如latin1和utf8,转化过程就为不可逆的,破坏性的。
注意:"SET NAMES UTF8"作用只是临时的,MySQL重启后就恢复默认了。