mysql数据库保存表情emoji失败,修改字符集utfmb4也无效

前言

使用富文本编辑提交包含表情(emoji)的 html 字符串时,无法保存到 mysql 数据库

提交 html 字符串数据如下

在这里插入图片描述

出现如下报错

Incorrect string value: '\\xF0\\x9F\\x98\\x801' for column 'preview' at row 1

在这里插入图片描述

解决

使用js原生提供的 window.btoa 和 window.atob 方法进行 Base64 转码。

表情是中文字符的还需配合 encodeURI 和 decodeURI 进行转码,再进行 Base64 转码。

// 提交时转码
const encode = window.btoa(encodeURI('<p>1😀1</p>'));

// html渲染时解码
const decode = decodeURI(window.atob('<p>1😀1</p>'));

效果图

使用 Base64 转码后的提交数据

在这里插入图片描述

Base64 解码后的页面显示效果

在这里插入图片描述

如果本篇文章对你有帮助的话,很高兴能够帮助上你。

当然,如果你觉得文章有什么让你觉得不合理、或者有更简单的实现方法又或者有理解不来的地方,希望你在看到之后能够在评论里指出来,我会在看到之后尽快的回复你。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值