MySQL中使用中文时,你得改下字符集,不然会乱码。
目录
1. MySQL中有关character_set变量的含义
2. 使用命令设置character_set
3. 修改配置文件永久修改character_set
1
MySQL中有关character变量
在MySQL中有关character_set变量总共8个,分别代表以下含义:
代码语言:javascript复制 #客户端连接时,由客户端发送给server端设置
character_set_client
#客户端连接时,由客户端发送给server端设置
character_set_connection
# 当前所在的数据库字符集,如果没有切换到其他数据库,则character_set_database显示的和character_set_server一致。
character_set_database
#把os上文件名转化成此字符集,即把 character_set_client转换character_set_filesystem,默认binary是不做任何转换的
character_set_filesystem
#客户端连接时,服务器返回给客户端的结果字符集
character_set_results
#数据库字符集
character_set_server
#只读数据不能更改变,
character_set_system
# 一个目录而已
character_sets_dir
总的来说:
- character_set_server 与character_set_database 设置服务器端的字符集,并且character_set_database 会慢慢在8.0之后的版本去掉。
- character_set_client character_set_connection character_set_results这3个参数值是由客户端每次连接进来设置的,和服务器端没关系。从实际上可以看到,当客户端连接服务器的时候,它会将自己想要的字符集名称发给mysql服务器,然后服务器就会使用这个字符集去设置character_set_client character_set_connection character_set_results这三个值。如cmd是用gbk,而SQLyog是用utf8,navicat 是utfmb4. 注意:mysql的utf8不是真正的utf8,是一个伪UTF8,utf8mb4才是真正的utf8,建议使用utf8mb4。
win10 下普通cmd,默认是GBK
在显示 utf8中文数据时会乱码,但是你用cmd告诉MySQL服务器器我使用的是GBK,你要给我返回GBK数据就可以正常显示了,如下图。这也是为什么PHP,Java,Python等编程连接数据库时都要指定数据库的结果集。
2
使用命令设置character_set
使用命令设置可以实现,但是当数据库重启时,失效。
代码语言:javascript复制#设置返回时的结果集
set character_set_results = gbk;
set character_set_database=utf8;
set character_set_server=utf8;
3
修改配置文件永久修改character_set
windows下修改my.ini,一般存放路径C:ProgramDataMySQLMySQL Server 5.7;
Linux下 修改my.cnf,一般存放路径:/etc/mysql/
修改内容如下,附加的形式:
代码语言:javascript复制[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
【福利 资源 !!!】,关注公众号回复 mysql,获取MySQL 5.7 从入门到精通
END