emobj在什么情况下不能存入数据库
例如:emoji用到的字符是4字节的utf-16(utf-16有2字节和4字节两种编码),而数据库是采用utf-8,并且最大只允许3字节的字符,在这种极端的情况下;
如果数据库不方便临时调整,那么就需要前端对这个问题进行处理;
- 入库前进行处理
- 从库取出进行处理让浏览器识别它
示例
const UTFTranslate = {
Change: function (value) {
return encodeURIComponent(value)
},
ReChange: function (value) {
return decodeURIComponent(pValue);
}
};
// 提交前前转码,将转码后的数据提交
UTFTranslate.Change('😁张') // %F0%9F%98%81%E5%BC%A0
// 渲染前解码,将接口返回的数据解码后进行渲染
UTFTranslate.ReChange('%F0%9F%98%81%E5%BC%A0') // 😁张