JavaScript 处理emobj存入数据库

86 阅读1分钟
emobj在什么情况下不能存入数据库

例如:emoji用到的字符是4字节的utf-16(utf-16有2字节和4字节两种编码),而数据库是采用utf-8,并且最大只允许3字节的字符,在这种极端的情况下;

如果数据库不方便临时调整,那么就需要前端对这个问题进行处理;

  1. 入库前进行处理
  2. 从库取出进行处理让浏览器识别它
示例
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')  // 😁张