mysql修改编码为utf8mb4

2018-08-25  本文已影响24人  极客收藏夹

UTF-8

Unicode 是「字符集」,是字符与特定ID的映射
UTF-8、UTF-16 是「编码规则」,是对字符的传输规则

UTF-8 是以 8 位为一个编码单位的可变长编码。会将一个码位编码为 1 到 4 个字节。同理,UTF-16是以16位为单位

Mysql的utf8mb4

MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是「most bytes 4」的意思,专门用来兼容四字节的unicode。
utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。 好好地为什么要多个utf8mb4呢?以为mysql支持的 utf8 编码最大字符长度为 3 字节(理解为Mysql之前的utf8是有坑的),如果遇到 4 字节的宽字符就会插入异常了。包括 Emoji 表情(Emoji 是一种特殊的 Unicode 编码,常见于 ios 和 android 手机上),和很多不常用的汉字,以及任何新增的 Unicode 字符等等。

修改编码为utf8mb4

登录mysql,输入密码。

sudo mysql -u root -p

查看当前mysql的字符集

mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

显示

image.png

再开一个终端tab,查看配置文件路径

~$ mysql --help|grep my.cnf
# 输出
/etc/my.cnf  /etc/mysql/my.cnf   ~/.my.cnf 

编辑 已经存在配置文件,笔者的是 /etc/mysql/my.cnf ,

插入


[client]
default-character-set=utf8mb4
 
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
skip-character-set-client-handshake = true
 
[mysql]
default-character-set = utf8mb4

保存好,重启 mysql

 service mysql restart

再次登录,查看字符集(见上文)。得到输出

image.png
上一篇下一篇

猜你喜欢

热点阅读