SQL编码基础知识
文章目录 核心概念字符集与编码 常见编码类型详解ASCIILatin1ISO-8859-1GBKUTF-8UTF-8mb4编码类型对比速查 SQL 中的编码实践创建数据库时指定编码创建表时指定编码为特定列指定编码查看编码信息服务器端配置文件设置my.cnf / my.ini 校对规则Collation 常见编码问题与排查中文乱码的根本原因排查思路字符集转换注意事项 最佳实践总结 核心概念字符集与编码在深入 SQL 编码之前需要先理解几个基础概念字符Character人类语言中最小的书写单位如英文字母、汉字、数字、标点符号等。字符集Character Set一组字符的集合定义了可以存储和处理的字符范围。例如 ASCII 包含 128 个字符Unicode 则几乎涵盖世界上所有语言的字符。编码Encoding将字符转换为二进制数据的过程。计算机无法直接存储文字编码就是字符与二进制的映射规则。校对规则Collation决定字符集中字符如何比较和排序的规则如大小写是否敏感、排序顺序等。 简单理解字符集是有哪些字编码是怎么存成二进制校对规则是怎么比较和排序。 常见编码类型详解ASCII使用 7 位二进制数表示128 个字符包括英文字母、数字、标点符号和控制字符仅能覆盖英文环境不支持中文适用场景纯英文文本存储Latin1ISO-8859-18 位字符编码可表示西欧语言中的大部分字符英语、法语、德语、西班牙语等不支持中文、日文等东亚语言适用场景面向欧洲市场的单语言应用GBK中国的国家标准字符集主要用于简体中文环境固定用2 个字节表示一个汉字收录约 2.1 万个汉字适用场景仅需支持中文的国内项目UTF-8基于 Unicode 的变长编码方案是目前开发中的首选编码英文字符用1 个字节兼容 ASCII中文通常用3 个字节特殊符号用4 个字节既解决了 Unicode 的空间浪费问题又实现了全球语言兼容UTF-8mb4UTF-8 的超集额外支持4 字节字符如 Emoji 表情MySQL 中的utf8实际只支持最多 3 字节无法存储 Emoji适用场景需要存储表情符号、生僻字的应用如社交、即时通讯编码类型对比速查编码类型字节数支持中文支持Emoji典型场景ASCII1❌❌纯英文Latin11❌❌西欧语言GBK2汉字✅❌国内单语言项目UTF-81~4变长✅❌MySQL中多语言通用UTF-8mb41~4变长✅✅多语言Emoji SQL 中的编码实践创建数据库时指定编码-- 推荐使用 utf8mb4 支持所有字符CREATEDATABASEmydatabaseCHARACTERSETutf8mb4COLLATEutf8mb4_general_ci;创建表时指定编码CREATETABLEusers(idINTPRIMARYKEYAUTO_INCREMENT,nameVARCHAR(255),bioTEXT)CHARACTERSETutf8mb4COLLATEutf8mb4_general_ci;为特定列指定编码CREATETABLEarticles(idINTPRIMARYKEY,titleVARCHAR(200)CHARACTERSETutf8mb4,contentLONGTEXTCHARACTERSETutf8mb4);查看编码信息-- 查看服务器全局字符集配置SHOWVARIABLESLIKE%char_set%;-- 查看指定数据库的字符集SHOWCREATEDATABASE库名;-- 查看指定表的字符集SHOWCREATETABLE表名;-- 查看数据库支持的所有字符集SHOWCHARSET;服务器端配置文件设置my.cnf / my.ini[mysqld] character-set-serverutf8mb4 collation-serverutf8mb4_general_ci 校对规则Collation校对规则决定了字符的比较和排序方式常见的有utf8mb4_general_ci校对速度快准确性相对较低适合对性能要求高的场景utf8mb4_unicode_ci遵循 Unicode 标准更准确适合需要精确排序的场景utf8mb4_bin二进制比较区分大小写⚠️ci表示 case insensitive不区分大小写cs表示 case sensitive区分大小写bin表示二进制比较。 常见编码问题与排查中文乱码的根本原因乱码的本质是编码与解码规则不匹配常见原因包括数据库默认编码为 ASCII、Latin1 等不支持中文的编码客户端与数据库服务端编码不一致如客户端用 UTF-8服务端用 GBK数据在传输过程中经历了错误的编码转换排查思路统一编码确保客户端、连接层、数据库服务端、数据表使用相同的字符集推荐utf8mb4检查连接编码连接数据库时指定编码如SET NAMES utf8mb4;检查客户端工具确保 Navicat、MySQL Workbench 等工具的编码设置为 UTF-8检查应用层确保程序代码中字符串编码与数据库一致字符集转换注意事项当数据在不同字符集环境之间传递时数据库会进行自动转换。需要注意转换过程消耗系统资源频繁转换可能影响性能不兼容的字符可能导致数据丢失或乱码如 UTF-8 中的某些字符无法用 GBK 表示建议从设计阶段就统一编码避免后期转换 最佳实践总结新建项目一律使用utf8mb4而非utf8避免 Emoji 存储失败校对规则根据需求选择一般场景用utf8mb4_general_ci精确排序用utf8mb4_unicode_ci全链路统一编码客户端 → 连接层 → 数据库 → 表 → 列保持一致CHAR vs VARCHARCHAR(n)是定长存储VARCHAR(n)是变长存储n 代表字符个数而非字节数实际占用字节取决于编码方式迁移旧项目时使用ALTER TABLE ... CONVERT TO CHARACTER SET utf8mb4;进行编码迁移并验证数据完整性

相关新闻

windows 驱动实例分析系列: wireguard-nt驱动分析-api篇(四)

windows 驱动实例分析系列: wireguard-nt驱动分析-api篇(四)

WireGuard-NT API 模块分析 - 第四部分:辅助机制、错误处理与构建系统 1. 原子操作与内存屏障 API 模块在多线程环境中使用无锁原子操作来管理状态,主要应用于日志系统的状态控制。 1.1 无栅栏原子操作 在 logger.c 中使用了 ReadULongNoFence 和 WriteU…

2026/11/14 9:50:41 阅读更多 →
2026 年 MCP 协议彻底火了:用 Python 从零搭建你的第一个 AI Agent 工具链

2026 年 MCP 协议彻底火了:用 Python 从零搭建你的第一个 AI Agent 工具链

2026 年 MCP 协议彻底火了:用 Python 从零搭建你的第一个 AI Agent 工具链如果 2024 年是 RAG 的元年,2025 年是 Function Calling 的普及年,那 2026 年毫无疑问属于 MCP(Model Context Protocol,模型上下文协议&#…

2026/10/29 2:56:09 阅读更多 →
嵌入式CAN通信学习记录(万字解析):从STM32到Linux双机联调实战

嵌入式CAN通信学习记录(万字解析):从STM32到Linux双机联调实战

1. 引言 CAN(Controller Area Network)总线是嵌入式系统中广泛使用的一种高可靠性、多主机的串行通信协议,尤其在汽车电子、工业控制等领域应用广泛。本文旨在记录我学习嵌入式CAN通信的完整过程,涵盖从STM32开发板的环回/静默模…

2026/10/31 17:49:31 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/14 5:13:29 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/14 5:13:29 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/14 5:13:29 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/13 22:08:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/14 2:41:37 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/14 5:13:29 阅读更多 →

日新闻

周新闻

月新闻