mysql中文乱码

php MySQL中文乱码问题:

处理方法:set names utf8

mysql.ini

[mysql]
default-character-set=utf8 //客户端的默认字符集
[mysqld]
default-character-set=utf8 //服务端的默认字符集

MySQL Cmd Line Client
mysql> show variebles like "character_set_%";

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重启后就恢复默认了。

你可能感兴趣的:(mysql)