MySQL 支持utf8mb4
封面图
•
2025-10-26
•
MySQL
293
0
0
0
是的,**MySQL 从 5.5.3 版本开始支持 `utf8mb4` 字符集**,并且在 **MySQL 5.7 及更高版本中,默认字符集已经改为 `utf8mb4`**。 --- ### ✅ MySQL 支持 utf8mb4 的说明: #### 1. **`utf8mb4` 和 `utf8` 的区别** - **`utf8`**:在 MySQL 中,实际上只支持 **3 字节** 的 UTF-8 编码(即只能表示基本多语言平面中的字符),不支持 **4 字节的 UTF-8 字符**(如部分 emoji、一些生僻汉字等)。 - **`utf8mb4`**:完整支持 **4 字节** 的 UTF-8 编码,可以正确存储和处理所有 Unicode 字符(包括 emoji)。 #### 2. **MySQL 对 `utf8mb4` 的支持** - **MySQL 5.5.3+**:支持 `utf8mb4`。 - **MySQL 5.7+**:默认字符集为 `utf8mb4`。 - **MySQL 8.0**:全面支持 `utf8mb4`,推荐使用。 --- ### 🛠 如何启用或配置 `utf8mb4` #### 1. **查看当前数据库/表的字符集** ```sql SHOW VARIABLES LIKE 'character_set%'; SHOW CREATE DATABASE your_database; SHOW CREATE TABLE your_table; ``` #### 2. **修改数据库/表/列的字符集为 `utf8mb4`** ##### 修改数据库: ```sql ALTER DATABASE your_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` ##### 修改表: ```sql ALTER TABLE your_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` ##### 修改列: ```sql ALTER TABLE your_table MODIFY your_column TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` #### 3. **设置连接字符集** 确保客户端连接时也使用 `utf8mb4`: ```sql SET NAMES utf8mb4; ``` 或者在连接字符串中指定: ```text jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=UTF-8 ``` --- ### 📌 注意事项 - 如果你使用的是较旧版本的 MySQL(如 5.5.3 以下),则不支持 `utf8mb4`。 - 在应用层(如 Java、Python 等)也要确保编码为 UTF-8。 - 使用 `utf8mb4` 后,索引长度可能会受到限制(例如 `VARCHAR(255)` 在 `utf8mb4` 下最多占用 767 字节,如果超出需要调整)。 --- ### ✅ 推荐做法 如果你的应用需要支持完整的 Unicode 字符(如 emoji、中文生僻字等),建议: - 使用 **MySQL 5.7 或以上版本** - 将数据库、表、列都设置为 `utf8mb4` - 应用层统一使用 UTF-8 编码 --- 如果你有具体的 MySQL 版本或遇到问题,我可以进一步帮你分析。
上一篇:
VSCode 常用快捷键
下一篇:
Centos php7升级
标题录入,一次不能超过6条
留言
评论