常用字符集
Unicode
:是字符集,而没有编码方式
UTF-8
:是一种 Unicode
字符集的编码方式,其他还有 UTF-16
,UTF-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-8
用 1
到 6
个字节编码 Unicode
字符,如果 UNICODE
字符由 2
个字节表示,则编码成 UTF-8
很可能需要 3
个字节。而如果 UNICODE
字符由 4
个字节表示,则编码成 UTF-8
可能需要 6
个字节。Unicode
一个中文字符占 2
个字节,而 UTF-8
一个中文字符占 3
个字节utf8mb4
- 8-bit Unicode Transformation Format
:utf8mb4
兼容 utf8
,能支持更多的字符集,MySQL
在 5.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;
|
参考