建库字符集选择`utf8mb4` + `utf8mb4_unicode_ci` 组合

在 MySQL 中创建 UTF-8 编码的数据库时,请直接使用 **`utf8mb4`** 字符集(而非旧版的 `utf8`),这是 MySQL 中真正的 UTF-8 实现。以下是具体操作和注意事项:


一、创建数据库(2种方式)

1. 基础版(自动选择默认校对规则)

```sql

CREATE DATABASE your_database_name

CHARACTER SET utf8mb4

COLLATE utf8mb4_unicode_ci;

```

2. 精简版(MySQL 8.0+ 默认使用 `utf8mb4`)

```sql

CREATE DATABASE your_database_name;

```


二、为什么必须选 `utf8mb4`?

  • ✅ **完全支持 Unicode**:包含 Emoji 表情符号(如 😊)、生僻汉字、特殊符号等(`utf8` 仅支持 3 字节字符,无法存储 4 字节字符)。

  • ✅ **兼容性**:现代 MySQL 版本(5.5.3+)均支持,且是当前标准方案。


三、校对规则选择(`COLLATE`)

  • **`utf8mb4_unicode_ci`**:基于 Unicode 标准排序,准确性高(推荐)。

  • **`utf8mb4_general_ci`**:旧式简单排序,速度快但准确性略低(已逐渐淘汰)。


四、后续使用注意事项

  1. **创建表时显式指定字符集**(避免继承服务器默认配置):

```sql

CREATE TABLE your_table (

id INT PRIMARY KEY,

content VARCHAR(255)

) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

```

  1. **连接字符串配置**(确保应用层与数据库编码一致):
  • JDBC 示例:`jdbc:mysql://host/db?useUnicode=true&characterEncoding=UTF-8`

  • 其他语言同理,需明确指定 UTF-8 编码。


五、验证设置是否生效

```sql

-- 查看数据库编码

SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME

FROM INFORMATION_SCHEMA.SCHEMATA

WHERE SCHEMA_NAME = 'your_database_name';

-- 查看表编码

SHOW CREATE TABLE your_table;

```


**总结**:直接使用 `utf8mb4` + `utf8mb4_unicode_ci` 组合,确保全面兼容 Unicode 并避免未来编码问题。

相关推荐
吴名氏.7 小时前
Java转AI Agent教程(第九周)错误矩阵
java·人工智能·矩阵·ai agent
文丑颜不良啊7 小时前
LeetCode1901~1920题目解析
java·leetcode
tealcwu8 小时前
【Unity基础】为什么游戏需要物理按键映射?从 Unity Input Manager 到跨引擎输入设计
java·游戏·unity
vipxieliang8 小时前
Spring Boot 性能优化实战:从启动加速到运行时调优
java·spring boot
AI全栈学习助手8 小时前
告别“转圈等待”:Spring Boot + SSE 让大模型像 ChatGPT 一样流式输出
java·人工智能·spring boot·后端·aigc
天天被压力8 小时前
【A股分钟级高频数据完全手册 #02】Python调用股票1分钟数据接口:Pro版最新分时取数与字段解析
java·人工智能·python
代码不停8 小时前
Spring Aop
java·数据库·spring
道尔柯南8 小时前
C++ STL 入门详解:从认识标准模板库到掌握学习方法
java·c++·学习方法
杨凯凡8 小时前
Spring Boot 4 升级为什么卡在 Jackson 3?包名、配置与兼容迁移指南
java·spring boot 4·技术升级·jackson 3·spring framework
天天被压力8 小时前
【A股分钟级高频数据完全手册 #01】Pro版接口体系总览与REST鉴权:42篇地图与从0接入
java·人工智能·python