码迷,mamicode.com
首页 > 其他好文 > 详细

可编辑div emoji 表情处理

时间:2020-01-10 12:16:24      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:parse   无法   escape   tostring   length   replace   string   return   nes   

DIV 设置可编辑 contenteditable=true

 <div contenteditable=true id="divTest"></div>

 

数据库存入需要将表设置为utf8mb4 编码格式

如果对数据处理,例如转为json数据,emoji 表情将无法存入数据库,需要对 emoji 表情做转码处理

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;
        }

从数据库取出做解码处理

//表情解码
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;
}

可编辑div emoji 表情处理

标签:parse   无法   escape   tostring   length   replace   string   return   nes   

原文地址:https://www.cnblogs.com/xuey/p/12165434.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!