您的位置:首页 > 数据库 > MySQL

谈谈MySQL乱码和set names

2017-10-30 15:53 344 查看
SET NAMES utf8

相当于

SET character_set_client = utf8 用来设置客户端送给MySQL服务器的数据的 字符集

SET character_set_results = utf8 服务器返回查询结果时使用的字符集

SET character_set_connection = utf8

MySQL 服务器 把客户端传来的数据,从character_set_client字符集转换成character_set_connection字符集

比如我们可以设置

SET character_set_client = gbk

SET character_set_results = gbk



(SET character_set_connection = utf8

这样数据在 MySQL内部的存储表示 为 utf8 字符集,而 与 客户端交互时,使用gbk字符集合)

改为:

(SET character_set_connection = utf8表示链接时用的字符集,看似多余,别管它,也没有确切的文档说明,我们只需要注意上面两个不会乱码就可以了)

另外:

如果CREATE TABLE中没有明确指出字符集和collation,那么全局的 database字符集和collation将做为该表的字符集和collation值。现在很多虚拟主机管理员将其设置为utf8。默认的database的字符集和collation可以通过系统变量character_set_database和collation_database查看。服务器当默认database改变时设置这些变量的值。如果没有默认的database,这些变量的将与对应的服务器级的系统变量character_set_server和collation_server的值相同。

我们可以看看系统的设置, 运行”SET NAMES utf8″这条语句后,系统的设置就有了变化

SHOW VARIABLES LIKE ‘character_set_%’;

SHOW VARIABLES LIKE ‘collation_%’;

utf8_general_ci:

转自:http://nmyun.blog.51cto.com/448726/129622
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 乱码 character