React 前端导航

node + mysql保存Emoji失败乱码问题

node + mysql保存Emoji失败乱码问题

背景

开发环境: win + node(egg) + mysql

用户自定义消息需要保存到mysql数据库,消息可能包含Emoji,直接保存消息时Emoji乱码变成????.

解决

直接先说解决办法:

① 修改mysql数据库的字符集改为 utf8mb4,

② 同时设置node mysql连接chareset为 utf8mb4 即可。

这种方式有个缺点就是不兼容 mysql 5.5.3 之前的版本,如果要考虑兼容老版本请采用其他方式。

问题原因

数据库的字符编码我们一般设置为 utf8,这里我们出问题也是设置的 utf8, utf8字符编码支持的编码范围为 \u0000-\uFFFF,而 Emoji 所在的编码范围是 \u1F601-\u1F64F,超出 MySql 的边界了,所以直接保存Emoji会出问题。utf8mb4 是 MySql 在 5.5.3 版本之后新增的编码方式,目的就是用来用来兼容四字节的 Unicode,其中就包括 Emoji。

同时数据库连接配置的chareset也修改为 utf8mb4,这样读取Emoji的时候才能正常读取。

声明:本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。邮箱:farmerlzj@163.com。 本站原创内容未经允许不得转载,或转载时需注明出处: 内容转载自: React前端网:https://qianduan.shop/blogs/detail/20

#mysql#Emoji#node

相关推荐

NodeJs发起https请求报错:certificate has expired

在egg中发起https请求时提示证书过期错误(certificate has expired)问题记录

Node定时任务怎么做

linux有crontab定时任务,那么在Node中,定时任务该如何实现?