mysql字符集

mysql字符集

utf8mb4

MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。utf8mb4是utf8的超集,升级时只要将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。

原来mysql支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了。 要在 Mysql 中保存 4 字节长度的 UTF-8 字符,需要使用 utf8mb4 字符集,但只有 5.5.3 版本以后的才支持.

当使用到包括 Emoji 表情(Emoji 是一种特殊的 Unicode 编码,常见于 ios 和 android 手机上),和很多不常用的汉字,以及任何新增的 Unicode 字符等等时,需要将字符集设置成utf8mb4。

因为 utf8mb4 是 utf8 的超集,从旧版本的MySQL UTF8 升级数据时 不用担心字符转换或丢失数据。

1
2
3
4
5
6
 # 修改数据库:  
2 ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
3 # 修改表:
4 ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
5 # 修改表字段:
6 ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

排序规则

utf8_general_ci 和 utf8_unicode_ci这两个排序规则都适用于UTF-8字符编码,他们的区别在于文本的排序和比较方式。

在utf8mb4字符集 是 utf8mb4_unicode_ci 和 utf8mb4_general_ci

  • utf8mb4_unicode_ci 基于用于通用排序和比较的官方Unicode规则,该规则可以在多种语言中进行准确排序。
  • utf8mb4_general_ci是一组简化的排序规则,旨在尽力而为,同时采取许多旨在提高速度的捷径。它不遵循Unicode规则,在某些情况下(例如,使用特定语言或字符时)会导致不希望的排序或比较。

在现代服务器上,这种性能提升几乎可以忽略不计。它是在服务器仅占当今计算机CPU性能的一小部分的时候设计的。后缀cicase insensitive,是不大小写不敏感的。要区分大小写可以考虑使用后缀为cs的排序规则,或者是选择utf8_bin(字符串每个字符串用二进制数据编译存储。 区分大小写,而且可以存二进制的内容。)

-------------本文结束感谢您的阅读-------------
坚持分享,您的支持将鼓励我继续创作!
0%