⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

MySQL 字符集与排序规则

理解字符集和排序规则的概念,掌握配置和转换方法。 · 难度:入门 · +15XP

字符集基础

字符集定义了字符的编码方式,如 UTF-8、GBK。排序规则(Collation)定义了字符比较和排序的规则。MySQL 支持多种字符集,推荐使用 utf8mb4 以支持 emoji 等特殊字符。

查看字符集

-- 查看服务器字符集
SHOW VARIABLES LIKE 'character_set_server';
SHOW VARIABLES LIKE 'collation_server';

-- 查看数据库字符集 SHOW CREATE DATABASE mydb;

-- 查看表字符集 SHOW TABLE STATUS LIKE 'mytable';

设置字符集

-- 创建数据库时指定
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 修改表字符集 ALTER TABLE mytable CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 修改列字符集 ALTER TABLE mytable MODIFY name VARCHAR(100) CHARACTER SET utf8mb4;

常见字符集对比

字符集说明最大字节
utf8标准 UTF-8,不支持4字节字符3
utf8mb4完整 UTF-8,支持 emoji4
gbk中文 GBK 编码2

乱码问题处理

确保连接、数据库、表、列字符集一致。设置连接字符集:SET NAMES 'utf8mb4'; 或在连接字符串中指定 charset。

-- 测试乱码
CREATE TABLE test_charset (content VARCHAR(100)) CHARACTER SET latin1;
INSERT INTO test_charset VALUES ('中文'); -- 可能乱码
-- 转换
ALTER TABLE test_charset CONVERT TO CHARACTER SET utf8mb4;

练习提示

创建一个使用 latin1 字符集的表,插入包含中文和 emoji 的数据,观察乱码,然后转换为 utf8mb4 并修复数据。

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 68 篇
0 完成
🔥 0