mysql中的字符集是什么意思_mysql字符集基础概念

P粉602998670
发布: 2025-12-16 18:40:02
原创
362人浏览过
MySQL字符集是“字符→二进制编码”的映射规则,决定文本存储方式与支持字符范围,并绑定校对规则用于比较排序;支持服务器、数据库、表、列四级设置,乱码主因是链路中各环节字符集不一致。

mysql中的字符集是什么意思_mysql字符集基础概念

MySQL中的字符集,简单说就是一套“字符→二进制编码”的映射规则。它决定了数据库如何把文字(比如“张三”“Hello”“?”)存成字节,也决定了能存哪些字符。

字符集是存储文本的“编码字典”

计算机只认0和1,所有文字必须转成字节才能保存。字符集就定义了这个转换方式:

  • 同一个汉字“中”,在GBK里是0xD6D0(2字节),在UTF8MB4里是0xE4B8AD(3字节)
  • 英文“A”在ASCII、Latin1、UTF8MB4里都是0x41(1字节),所以UTF8兼容ASCII
  • emoji“?”需要4字节,在老版utf8(实际是utf8mb3)中不支持,必须用utf8mb4

字符集不是孤立存在的——它绑定校对规则(Collation)

字符集管“怎么存”,校对规则管“怎么比、怎么排”。没有校对规则,就无法做WHERE name = 'Alice'ORDER BY title

Zapier Agents
Zapier Agents

Zapier推出的Agents智能体,集成7000+应用程序

Zapier Agents 103
查看详情 Zapier Agents
  • utf8mb4_general_ci:不区分大小写(A == a),排序快,适合通用场景
  • utf8mb4_bin:按字节逐位比较(A ≠ a),适合密码、token等严格匹配
  • utf8mb4_unicode_ci:遵循Unicode标准排序,对德语变音、法语重音等处理更准确

字符集有层级,默认会逐级继承

MySQL允许在四个级别设置字符集和校对规则:服务器 → 数据库 → 表 → 列。下级不显式指定时,自动继承上级默认值。

  • 查看当前服务器默认:SHOW VARIABLES LIKE 'character_set_server';
  • 建库时指定:CREATE DATABASE db1 CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
  • 建表时指定列:name VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin

乱码往往不是字符集错,而是“链路不一致”

从客户端输入,到连接、服务端存储、再到查询返回,每个环节的字符集都要对齐。常见断点包括:

  • 客户端连接没声明编码(如没执行SET NAMES utf8mb4
  • 应用程序连接字符串漏配characterEncoding=utf8mb4
  • 表结构是utf8mb4,但字段实际用了latin1建的旧数据
  • 导出SQL文件时未指定--default-character-set=utf8mb4

以上就是mysql中的字符集是什么意思_mysql字符集基础概念的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号