MySQL 使用 utf8mb4 编码

Scroll Down

很早之前工作中修改过 utf8mb4 编码,一直未作记录,最近小伙伴又遇到该问题了,索性直接记录一下。

有关字符集相关知识介绍,可以参考之前的博文:[笔记]从根儿上理解 MySQL#3.字符集

1.MySQL8 以下版本的修改

如果你在使用 MySQL 或 MariaDB,不要使用用“utf8”编码,改用“utf8mb4”。具体可以参考这里(How to support full Unicode in MySQL databases

提供了一个指南用于将现有数据库的字符编码从“utf8”转成“utf8mb4”。

在 MySQL8 以下版本,测试发现,如果只需要对某一列支持utf8mb4,此时不需要改数据库和表的编码,只修改那一列的编码为utf8mb4就可以,最主要的还是修改my.cnf文件。
示例如下:

[client]  
#default-character-set=utf8
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

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

2.MySQL8+ 版本的修改

在 8.0 版本之前,默认字符集为latin1,utf8 指向的是 utf8mb3,8.0版本默认字符集为 utf8mb4,utf8 默认指向的也是 utf8mb4。

此时无需修改my.cnf只需要修改对应的库、表、字段对应编码为 utf8mb4 即可。