美文网首页
前端emoji表情字符串处理

前端emoji表情字符串处理

作者: 南城FE | 来源:发表于2018-06-06 21:41 被阅读0次

    emoji表情存储需要数据库存储字段的编码方式为utf8mb4,且该编码方式需数据库为 5.5.3 及以上版本。而且发现设置了utf8mb4编码后,还是会有部分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;
        }
    

    参考:
    移动前端手机输入法自带emoji表情字符处理

    相关文章

      网友评论

          本文标题:前端emoji表情字符串处理

          本文链接:https://www.haomeiwen.com/subject/edlisftx.html