-
查看数据库支持的字符集:
SHOW CHARACTER SET;
-
查看数据库当前使用的字符集:
SHOW VARIABLES LIKE '%char%';
各字段含义
注:Linux下默认字符集是latin1,不支持中文。 -
修改数据库字符集:
alter database database_name character set xxx;
-
修改表字符集:
alter table table_name character set xxx;
-
修改表字符集的同时转换已有列字符集:
alter table table_name convert to character set xxx;
-
修改列字符集
ALTER TABLE table_name MODIFY column_name {CHAR | VARCHAR | TEXT} (column_length) [CHARACTER SET charset_name] [COLLATE collation_name]```
- 字符集校对规则(COLLATION)
>在字符集内部进行字符比较的规则,如大小写敏感等
- 字符集校对规则特征:
1. 两个不同的字符集不能有相同的校对规则
2. 每个字符集有一个默认校对规则
3. 存在校对规则命名约定:以其相关的字符集名开始,中间包括一个语言名,并且以_ci(大小写不敏感)、_cs(大小写敏感)或_bin(二元)结束。
- 修改数据库默认字符集方法:
- `set variable_name=character_set`
eg: `set character_set_database=utf8mb4`
> 这种方法设置的字符集仅在此次连接,回话有效,重启后恢复默认
- 在my.cnf配置文件设置字符集默认参数
```bash
[client]
# 设置客户端字符集
default-character-set = utf8mb4
[mysqld]
# 设置服务端默认字符集
character-set-server = utf8mb4
# 设置服务端字符集默认校对规则
collation-server = utf8mb4_unicode_ci
# 设置拒绝客户端发送的字符集设置信息,即以服务端设置的字符集为准,可以防止客户端误操作
character-set-client-handshake = FALSE
注:在MySQL5.5.3之前,字符集在my.cnf中的配置为:
[mysqd]
default-character-set=utf8mb4
但是在5.5.3中弃用了这个属性,详见文档
- 注:emoji表情为四个字节,而utf8是三个字节的,因此用utf8存储emoji表情会报错
Incorrect string value: '\xF0\x9F\x98\x84\xF0\x9F
,必须用utf8mb4,utf8mb4是用四个字节存储