MySQL关于character_set 设置为uft8问题

2020-09-08 14:38:40 浏览数 (1)

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

总的来说:

  1. character_set_server 与character_set_database 设置服务器端的字符集,并且character_set_database 会慢慢在8.0之后的版本去掉。
  2. 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

0 人点赞