h5 page mobile emoji transcoding

  //表情转换
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 entitiestoUtf16(str) {
    
    
            return str.replace(/&#(\d+);/g, function (match, dec) {
    
    
                let H = Math.floor((dec - 0x10000) / 0x400) + 0xD800;
                let L = Math.floor(dec - 0x10000) % 0x400 + 0xDC00;
                return String.fromCharCode(H, L);
            });
        }

Guess you like

Origin blog.csdn.net/qq_31182399/article/details/109047042