向后台传输表情时,手机自带输入法emoji表情的输入,提交及显示——前端解决方案


//表情
    utf16toEntities(str) { //检测utf16emoji表情 转换为实体字符以供后台存储
      var patt=/[\ud800-\udbff][\udc00-\udfff]/g;
      str = str.replace(patt, function(char){
        var H, L, code;
        if (char.length===2) {   //辅助平面字符(我们需要做处理的一类)
          H = char.charCodeAt(0); // 取出高位
          L = char.charCodeAt(1); // 取出低位
          code = (H - 0xD800) * 0x400 + 0x10000 + L - 0xDC00; // 转换算法
          return "&#" + code + ";";
        } else {
          return char;
        }
      });
      return str;
    },

经过上述转换,我们手机端输入的emoji表情应该就可以提交到数据库了,but...解决问题往往不会这么一帆风顺,我们发现正常保存的emoji表情在页面上不能正常显示,我们前端采用vue开发,用{{}}将包含emoji字符实体的字符串渲染到页面上时显示的直接是这样的字符实体,审查元素发现HTML内容是这样,一时还不知道原因是什么,但一定是用{{}}渲染有问题,尝试换用v-html.

 

 

转自:https://www.cnblogs.com/kaidarwang/p/7458431.html


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM