
问题背景
手机上众多输入法和键盘支持输入 emoji 表情,给早期设计的程序造成了越来越多的干扰。
- 移动端购物的流行,2018 年 “双十一”全网移动端交易达到 93.6%
- 微信年度报告里 80 后爱用的“龇牙”表情,早在 2017 年 QQ 发布的统计数据就超过 303 亿。
最近我们团队就遇到了一个线上问题,就是由于用户下单备注使用 emoji 表情引起的问题。
通过解决这个问题,主要了解下面 3 个方面内容:
- Mysql 编码概念
- Mysql“乱码”是怎么来的:字符编码转换
- Emoji 在 Mysql 使用问题
问题分析
昨天突然接到业务反馈,监控告警了,有几个订单卡单了,一直在某个系统里面没有推到下游,最终导致错过了配送时间。
查询日志中心,ES 搜索到了某系统 Job 拉数据保存数据库的异常信息。
展开详细日志发现了关键日志:
ERROR 1366: Incorrect string value: '\xF0\x9F\x99\x8F...' for column 'Remark' at row 2。
试图将一个 4 字节的字符写入到一个 3 字节的列 Remark, 当然是报错了。
然后我们看了一下用户的备注 Remark 信息,**上午家里没人,请下午送,谢谢