background image

MySQL 命 令 行 输 入 “ SET  NAMES  UTF8;” , 然 后 执 行 “ show  variebles  like 

“character_set_%”;”

latin1

“character_set_client”、“character_set_connection”、“character_set_results”的值全部变为 utf8 了,
原来是这

3 个变量在捣蛋。查阅手册,上面那句等于:

1.SET character_set_client = utf8;

    2.SET character_set_results = utf8;
    3.SET character_set_connection = 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 在服务器上的配置问题了。岂不是我们每次对数据库读写都得加

“SET NAMES UTF8”,以保证数据传输的编码一致?能不能通过配置 MySQL 来达到那

三个变量默认就为我们要想的字符集?手册上没说,我在网上也没找到答案。所以,从服务
器配置的角度而言,是没办法省略掉那行代码的。

总结:为了让你的网页能在更多的服务器上正常 地显示,还是加上

“SET NAMES 

UTF8”吧,即使你现在没有加上这句也能正常访问。