工作随笔-特殊符号emoji存储

本文介绍了在数据库项目中遇到的字符集与校对规则问题,包括如何选择合适的字符集(如UTF8MB4)和校对规则(如utf8mb4_bin),以支持特殊字符如emoji表情的正确存储。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面的话:

第一次写工作随笔,目的是为了方便自己日后的复习和查询,会或多或少有缺陷,希望大家能指出错误,一同进步。

原因:

上家公司做抽奖项目时需要读取用户的呢称,当时做完功能后发现昵称出现乱码,当时是改变数据库编码格式解决了这个问题,但是对数据库字符集和校对规则了解不够深切,现对次总结下。

字符集和校对规则

  1. 字符集指的是从二进制编码转换成某种语言的对应关系,校对规则指的是字符集的排序方式,在MySql中 Utf-8是我们常用的字符集,此外还有GBK,ISO-8859-1 等字符集。其常用的校对规则如下:
  • utf8_general_ci :utf-8常用的校对规则不支持扩展,只能在字符中逐个对比,因此速度会较快。
  • utf8_unicode_ci :根据Unicode校对算法执行,特点是支持扩展,即可以把一个字母看作与其他字母组合相等。
  • utf8_bin : 将字符串每个字符用二进制数据编译存储,区分大小写,可以存储二进制的内容。

通常情况下utf8_general_ci 足够满足我们日常需求

但是遇到比如存储emojo的需求就需要改变字符集,使用UTF8MB4字符集,校对规则选用utf8mb4bin(使用utf8_general_ci校对规则的话可能导致某些emojo表情无法识别),UTF8MB4是数据库版本5.5.3之后新增的编码集,用来存储4字节的Unicode。它是UTF8的超集,除了将编码改为UTF8MB4外不需要做其他变化,为了兼容性,建议使用UTF8MB4编码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值