Jinyun's Notes

没什么天赋,爱好也不多,但愿坚持做些喜欢的事情

0%

MySQL 支持 emoji 图标的设置

常用字符集

Unicode:是字符集,而没有编码方式
UTF-8:是一种 Unicode 字符集的编码方式,其他还有 UTF-16UTF-32

  • ASCII - American Standard Code for Information Interchange:美国信息交换标准代码,主要用于显示现代英语和其他西欧语言。单字节编码,7 位表示一个字符,共 128 个字符
  • GBK - Chinese Internal Code Specification:汉字内码扩展规范。双字节编码,共收录了 21003 个汉字,共有 21885 个字符,兼容 GB2312-80 标准
  • UTF-8 - 8-bit Unicode Transformation Format:针对 Unicode 的可变长度字符编码,又称万国码。UTF-816 个字节编码 Unicode 字符,如果 UNICODE 字符由 2 个字节表示,则编码成 UTF-8 很可能需要 3 个字节。而如果 UNICODE 字符由 4 个字节表示,则编码成 UTF-8 可能需要 6 个字节。Unicode 一个中文字符占 2 个字节,而 UTF-8 一个中文字符占 3 个字节
  • utf8mb4 - 8-bit Unicode Transformation Formatutf8mb4 兼容 utf8,能支持更多的字符集,MySQL5.5.3 之后增加了这个编码。most bytes 4 是专门用来兼容四字节的 Unicode,也就是说能存储四个字节,处理 emoji 表情毫无压力

操作

设置成 utf8mb4 请根据实际情况而定,没有必要全部都设置为 utf8mb4

将数据库,数据表,数据表字段设置为 utf8mb4

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 更改数据库的编码方式
ALTER DATABASE test CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;

// 更改数据表的编码方式
ALTER TABLE test.demo CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

// 更改数据表的字段编码方式
ALTER TABLE test.demo
CHANGE `title` `title` VARCHAR(80) CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci DEFAULT '';

ALTER TABLE test.demo
MODIFY `title` VARCHAR(80) CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci DEFAULT '';

查看设置

查看数据库设置情况

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SHOW VARIABLES
WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

// 结果
character_set_client utf8mb4
character_set_connection utf8mb4
character_set_database utf8mb4
character_set_filesystem binary
character_set_results utf8mb4
character_set_server utf8mb4
character_set_system utf8
collation_connection utf8mb4_general_ci
collation_database utf8mb4_general_ci
collation_server utf8mb4_general_ci

查看数据表设置情况

1
SHOW FULL COLUMNS FROM test.demo;

参考

本笔记是笔者在学习和工作中的一些整理,如对您有用,请鼓励我继续写作