js转换emoji表情

隐身守侯 提交于 2020-01-03 20:04:52

// 将表情转为字符
var str="表情😀123456"
function utf16toEntities(str) {
    var patt=/[\ud800-\udbff][\udc00-\udfff]/g; // 检测utf16字符正则
    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;
}
var str01=utf16toEntities(str)
console.log(str01)

// 将字符转为表情
function uncodeUtf16(str){
  var reg = /\&#.*?;/g;
  var result = str.replace(reg,function(char){
      var H,L,code;
        if(char.length == 9 ){
          code = parseInt(char.match(/[0-9]+/g));
          H = Math.floor((code-0x10000) / 0x400)+0xD800;
          L = (code - 0x10000) % 0x400 + 0xDC00;
          return unescape("%u"+H.toString(16)+"%u"+L.toString(16));
        }else{
          return char;
        }
      });
  return result;
};
var str02=uncodeUtf16(str01)
console.log(str02)

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!