01.数据库字符级utf8和utf8mb4
1.1 utf8 和 utf8mb4
utf8
和utf8mb4
是MySQL
数据库的2种字符集。utf8mb4
是utf8
的扩充,为什么这么说呢?utf8
只支持最长三个字节的字符,即 Unicode 中的基本多文本平面,utf8mb4
支持4
字节长度的UTF-8
字符
支持的版本 5.5.3+(通过 select version(); 查看)
说明
- 三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xffff
- mb4就是most bytes 4 缩写
1.2 utf8mb4的支持
1.2.1 业务上的新库支持
全新数据库实例(一台完全新的数据库服务器)
设置 my.ini 文件
[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'
这样后面实例上,创建新库,可以不用指定,走默认的。
已有实例新库
# 数据库级别的设置
CREATE DATABASE [IF NOT EXISTS] <数据库名>
[[DEFAULT] CHARACTER SET <字符集名>](1)
[[DEFAULT] COLLATE <校对规则名>];
# 表的设置
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
(create_definition,...)
[table_options]
[partition_options]
table_option: {
AUTOEXTEND_SIZE [=] value
| AUTO_INCREMENT [=] value
| AVG_ROW_LENGTH [=] value
| [DEFAULT] CHARACTER SET [=] charset_name(2)
# 二次修改表字段
alter_option: {
table_options
[DEFAULT] CHARACTER SET [=] charset_name [COLLATE [=] collation_name] (3)
- (1) 设置字符集,进行字符的设置
- (2) 设置字符集,做表级别的设置,默认走实例级别的字符集
- (3) 字段设置字符集
字段修改参考
ALTER TABLE py_comment MODIFY COLUMN content VARCHAR(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT “” COMMENT ‘评论内容’;
1.2.2 已有的库进行维护
参考 1.2.1 的 已有实例新库
方式
1.3 utf8mb4格外说明
utf8mb4
对 char
的支持,官方 建议是 采用 varchar
类型
1.4 小结
- 数据库版本支持,查看方式(
select version();
) - 数据看支持的字符集(即
SHOW CHARACTER SET LIKE 'utf%';
) - 查看查询
Session
支持的字符集 (SHOW SESSION VARIABLES LIKE 'character\_set\_%';
) - 字符集的差异和比较
- 修改字符集方式有三种,根据实际情况选择处理