Mysql5.7 设置utf8mb4字符

参数说明。
character-set-client-handshake
用来控制客户端声明使用字符集和服务端声明使用的字符集在不一致的情况下的兼容性,默认为 true。

character-set-client-handshake = false

# 设置为 False, 在客户端字符集和服务端字符集不同的时候将拒绝连接到服务端执行任何操作

character-set-client-handshake = true

# 设置为 True, 即使客户端字符集和服务端字符集不同, 也允许客户端连接

character-set-server
声明服务端的字符编码, 推荐使用utf8mb4 , 该字符虽然占用空间会比较大, 但是可以兼容 emoji 😈 表情的存储

character-set-server = utf8mb4

collation-server
声明服务端的字符集, 字符编码和字符集一一对应, 既然使用了utf8mb4的字符集, 就要声明使用对应的字符编码

collation-server = utf8mb4_unicode_ci

init_connect
init_connect 是用户登录到数据库上之后, 在执行第一次查询之前执行里面的内容. 如果 init_connect 的内容有语法错误, 导致执行失败, 会导致用户无法执行查询, 从mysql 退出

使用 init_connect 执行 SET NAMES utf8mb4 意为:

声明自己(客户端)使用的是 utf8mb4 的字符编码
希望服务器返回给自己 utf8mb4 的查询结果
不过大部分程序链接mysql后会自己配置,所以这里忽略。

init_connect = 'SET NAMES utf8mb4'

完整配置

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
#init_connect = 'SET NAMES utf8mb4'

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Captcha Code