MySQL 中的 utf8 vs utf8mb4 区别
目录核心区别详细对比1. **编码范围不同**2. **历史背景**3. **实际影响最明显的场景**4. **存储空间差异**5. **性能差异**关键限制**索引长度限制**实际使用建议1. **新项目一律使用utf8mb4**2. **现有系统迁移步骤**3. **连接配置**4. **排序规则选择**兼容性考虑**向下兼容性****客户端兼容性**验证当前设置总结建议核心区别utf8在MySQL中是一个不完整的UTF-8实现而utf8mb4才是真正的UTF-8实现。详细对比1.编码范围不同字符集最大字节数支持的Unicode范围备注utf83字节BMP平面U0000 ~ UFFFF不支持4字节字符utf8mb44字节所有Unicode字符包括Supplementary Planes完整UTF-8支持2.历史背景utf8 (utf8mb3): MySQL早期实现的阉割版UTF-82003年引入当时认为3字节足够表示所有字符实际是UTF-8的一个子集后来更名为utf8mb3utf8mb4: MySQL 5.5.3引入完整的UTF-8实现“mb4” “multi-byte 4”3.实际影响最明显的场景-- 这些字符在utf8下会出错在utf8mb4下正常-- 表情符号EmojiINSERTINTOusers(name)VALUES(小明开心);-- 需要utf8mb4-- 部分生僻汉字INSERTINTOtext(content)VALUES();-- 需要utf8mb4-- 某些数学符号、音乐符号等INSERTINTOsymbols(symbol)VALUES();-- 需要utf8mb44.存储空间差异-- 创建表对比CREATETABLEtest_utf8(idINT,textVARCHAR(100)CHARACTERSETutf8-- 最大300字节);CREATETABLEtest_utf8mb4(idINT,textVARCHAR(100)CHARACTERSETutf8mb4-- 最大400字节);-- 注意VARCHAR(100)对于utf8最多存储100个字符但可能占用最多300字节-- 对于utf8mb4最多存储100个字符但可能占用最多400字节5.性能差异方面utf8utf8mb4说明存储空间较小较大utf8mb4可能多用约33%空间索引长度较短较长索引长度限制以字节为单位排序性能稍快稍慢差异通常不明显关键限制索引长度限制-- utf8: 最大索引长度 767字节-- utf8mb4: 最大索引长度 3072字节MySQL 5.7-- 但在早期版本中InnoDB对utf8mb4的索引限制-- utf8: VARCHAR(255) 可以建索引 (255×3765 767)-- utf8mb4: VARCHAR(255) 不能建索引 (255×41020 767)-- 需要改为 VARCHAR(191) (191×4764 767)-- 解决办法修改innodb_large_prefix设置SETGLOBALinnodb_large_prefixON;SETGLOBALinnodb_file_formatBarracuda;实际使用建议1.新项目一律使用utf8mb4-- 数据库级别CREATEDATABASEmydbCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;-- 表级别CREATETABLEmytable(idINTPRIMARYKEY,contentTEXT)CHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;-- 列级别ALTERTABLEmytableMODIFYcontentVARCHAR(255)CHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;2.现有系统迁移步骤-- 1. 备份数据-- 2. 修改数据库默认字符集ALTERDATABASEdatabase_nameCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;-- 3. 修改表字符集ALTERTABLEtable_nameCONVERTTOCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;-- 4. 修改连接配置-- 在my.cnf中[client]default-character-setutf8mb4[mysql]default-character-setutf8mb4[mysqld]character-set-serverutf8mb4 collation-serverutf8mb4_unicode_ci-- 5. 验证修改SHOWVARIABLESLIKEcharacter_set%;SHOWVARIABLESLIKEcollation%;3.连接配置# 命令行连接mysql -u root -p --default-character-setutf8mb4# 应用程序连接示例# Python (PyMySQL)connpymysql.connect(charsetutf8mb4)# PHP (PDO)$pdonew PDO(mysql:hostlocalhost;dbnametest;charsetutf8mb4,$user,$pass);# Java (JDBC)jdbc:mysql://localhost:3306/db?characterEncodingutf8mb44.排序规则选择-- 常用排序规则utf8mb4_unicode_ci-- 基于Unicode标准排序支持多语言推荐utf8mb4_general_ci-- 旧的排序规则性能稍好但准确性较差utf8mb4_bin-- 二进制排序区分大小写和重音utf8mb4_0900_ai_ci-- MySQL 8.0默认基于Unicode 9.0标准-- 查看所有utf8mb4排序规则SHOWCOLLATIONLIKEutf8mb4%;兼容性考虑向下兼容性utf8mb4完全兼容utf8utf8mb3存储的数据反向不兼容utf8mb4的数据可能无法在utf8中正常显示客户端兼容性所有现代客户端都支持utf8mb4确保客户端连接时也使用utf8mb4字符集验证当前设置-- 查看数据库、表、列的字符集SELECTTABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,CHARACTER_SET_NAME,COLLATION_NAMEFROMinformation_schema.COLUMNSWHERETABLE_SCHEMAyour_databaseANDCHARACTER_SET_NAMEISNOTNULL;-- 查看当前连接的字符集SHOWVARIABLESWHEREVariable_nameLIKEcharacter_set_%ORVariable_nameLIKEcollation%;总结建议始终使用utf8mb4不要使用utf8排序规则使用utf8mb4_unicode_ci或MySQL 8.0的utf8mb4_0900_ai_ci注意索引长度限制必要时调整字段长度确保应用程序连接字符串也使用utf8mb4MySQL 8.0已将utf8mb4作为默认字符集-- MySQL 8.0默认设置mysqlSELECTcharacter_set_database,collation_database;--------------------------------------------------|character_set_database|collation_database|--------------------------------------------------|utf8mb4|utf8mb4_0900_ai_ci|--------------------------------------------------重要提示MySQL未来版本中utf8可能会被重新定义为真正的UTF-8目前utf8是utf8mb3的别名建议明确使用utf8mb4以避免不确定性。

相关新闻

golang中使用 sort.Interface 实现复杂多级排序

golang中使用 sort.Interface 实现复杂多级排序

2026/7/8 18:48:20 阅读更多 →
指针,C语言的灵魂与噩梦:从入门到“放弃”的终极指南 [特殊字符]

指针,C语言的灵魂与噩梦:从入门到“放弃”的终极指南 [特殊字符]

2026/7/8 18:20:08 阅读更多 →
SAGE-Net:融合语义信息的自动驾驶注意力预测框架

SAGE-Net:融合语义信息的自动驾驶注意力预测框架

2026/7/3 21:04:49 阅读更多 →

最新新闻

AI建站实战:WordPress外贸站从0到1与一人公司技术栈

AI建站实战:WordPress外贸站从0到1与一人公司技术栈

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 “一个人就是一家公司”,这句话在AI时代正从一句口号变成一种可落地的商业模式。过去,一个独立开发者或创业者…

2026/7/9 18:23:51 阅读更多 →
TC78H651AFNG与PIC18F27K40的直流电机驱动方案解析

TC78H651AFNG与PIC18F27K40的直流电机驱动方案解析

1. 项目背景与核心器件解析在工业自动化和消费电子领域,直流有刷电机驱动器一直是关键的执行部件。TC78H651AFNG作为东芝新一代H桥驱动器IC,与Microchip的PIC18F27K40微控制器组合,构成了一个高性能、高集成度的电机控制解决方案。这套组合特…

2026/7/9 18:21:50 阅读更多 →
GESP2026年6月认证C++八级( 第一部分选择题(1-7))精讲

GESP2026年6月认证C++八级( 第一部分选择题(1-7))精讲

第1题 组合计数答案:B(455)题目从 7 本不同算法书 和 5 本不同数学书 中选 4 本,要求:两类书都至少选 1 本。问一共有多少种选法?第一步:为什么不能直接计算?1、有的同学第一反应&am…

2026/7/9 18:19:50 阅读更多 →
UniversalAdbDriver终极指南:一站式解决Windows ADB驱动安装难题

UniversalAdbDriver终极指南:一站式解决Windows ADB驱动安装难题

UniversalAdbDriver终极指南:一站式解决Windows ADB驱动安装难题 【免费下载链接】UniversalAdbDriver One size fits all Windows Drivers for Android Debug Bridge. 项目地址: https://gitcode.com/gh_mirrors/un/UniversalAdbDriver 还在为Windows电脑无…

2026/7/9 18:19:50 阅读更多 →
Halcon 12点标定实战:3步修正9点标定旋转中心偏移(附完整代码)

Halcon 12点标定实战:3步修正9点标定旋转中心偏移(附完整代码)

Halcon 12点标定实战:3步修正9点标定旋转中心偏移(附完整代码)在机器视觉定位引导系统中,标定精度直接决定了整个系统的定位准确性。9点标定作为基础方法虽然简单易用,但在实际应用中常因旋转中心偏差导致机械坐标转换…

2026/7/9 18:19:50 阅读更多 →
5款机器视觉SCI期刊审稿周期对比:IET CV 1个月 vs IJCV 4.5个月

5款机器视觉SCI期刊审稿周期对比:IET CV 1个月 vs IJCV 4.5个月

5款机器视觉SCI期刊审稿周期对比:从1个月到4.5个月的高效投稿策略在机器视觉领域,选择合适的SCI期刊投稿不仅关乎研究成果的传播效果,更直接影响学术生涯的关键时间节点——无论是毕业答辩、职称评定还是项目结题。面对从1个月到4.5个月不等的…

2026/7/9 18:19:50 阅读更多 →

日新闻

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南 【免费下载链接】ESLyric-LyricsSource Advanced lyrics source for ESLyric in foobar2000 项目地址: https://gitcode.com/gh_mirrors/es/ESLyric-LyricsSource 还在为Foobar2000找不到高质…

2026/7/9 0:01:04 阅读更多 →
ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍 【免费下载链接】ElegantBook Elegant LaTeX Template for Books 项目地址: https://gitcode.com/gh_mirrors/el/ElegantBook 你是否曾经为学术书籍的封面设计而烦恼?想要一个既专业又美观的封…

2026/7/9 0:03:06 阅读更多 →
如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南 【免费下载链接】pyodbc Python ODBC bridge 项目地址: https://gitcode.com/gh_mirrors/py/pyodbc 在当今数据驱动的商业环境中,企业级数据库连接已成为现代应用开发的核心需求。pyodbc作为一款强大…

2026/7/9 0:07:11 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/9 13:46:46 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/8 16:59:55 阅读更多 →

月新闻