MYSQL0003 字符集和比较规则

本文深入探讨了多种字符集如ASCII、ISO8859-1、GB2312、GBK、UTF-8及其扩展版本UTF-8MB3和UTF-8MB4的原理与应用。讲解了字符编码的历史演变,以及不同编码方式下字符的表示方法。同时,文章还介绍了字符集在服务器、数据库、表和列级别的设置方法。

字符集和比较规则

ASCII 128
ISO 8859-1
GB 2312
GBK
utf8

  • 字符范围
  • 如何映射

utf8mb3 1-3个字节表示字符
utf8mb4 1-4个字节表示字符

show charset

一共41种字符集

服务器级别
数据库级别
表级别
列级别

‘A’ 65
‘B’ 66

‘a’ 97
'b’98

‘我’ 25105

### MySQL 8 字符集排序规则 #### 默认字符集与排序规则MySQL 8.0.1 及更高版本中,默认字符集为 `utf8mb4`,默认排序规则为 `utf8mb4_0900_ai_ci`[^2]。此排序规则属于 `utf8mb4_unicode_ci` 类型之一。 #### 字符集差异 需要注意的是,尽管名称相似,MySQL中的 `utf8` 并不代表标准的 UTF-8 编码格式;实际上,为了更好地支持完整的 Unicode 字符(包括表情符号其他四字节字符),推荐使用 `utf8mb4` 而不是 `utf8`[^3]。 #### 排序规则的选择 对于排序规则而言: - `utf8mb4_unicode_ci` 提供更精确的语言敏感性匹配,适用于多语言环境下的数据处理。 - `utf8mb4_general_ci` 则提供了更快的速度,但在某些情况下可能不如前者准确[^5]。 具体选择取决于应用程序的需求——如果涉及多种欧洲语言或其他需要严格区分大小写的场景,则应优先考虑 `utf8mb4_unicode_ci` 或其变体;而对于大多数简单的应用场景,尤其是只包含基本拉丁字母的情况,可以选择性能更好的 `utf8mb4_general_ci`。 #### 设置方法 可以通过以下 SQL 命令来设置数据库、表或列级别的字符集及排序规则: ```sql -- 创建新数据库时指定字符集排序规则 CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 修改现有数据库的字符集排序规则 ALTER DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 创建带有特定字符集排序规则的新表 CREATE TABLE mytable ( id INT NOT NULL PRIMARY KEY, name VARCHAR(255) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ``` #### 兼容性注意事项 当从旧版 MySQL 升级至 8.x 版本时,可能会遇到由于默认排序规则变化带来的兼容性问题。特别是那些依赖于早期版本默认行为的应用程序,在迁移过程中应当仔细测试并调整相应的配置以确保一致性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值