微信小程序或者前端,输入键盘自带的emoji表情的编码解码

发布时间:2019-06-09 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了微信小程序或者前端,输入键盘自带的emoji表情的编码解码脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

表情符的编码解码

我之前在做微信小程序的时候遇到了一个问题,一些让用户输入的地方,还有用户的微信昵称都有可能输入键盘自带的emoji表情符,在服务端接收的时候会有异常,在前端进行MD5加密后的签名和后端接收到数据后再进行MD5后的签名不一样。

网上有给出一些解决方法,比如加载表情符图片,修改数据库的字符编码等,这些方法都不太好,也没有解决问题,后面找了比较久才找到合适的解决的方法:表情符编码是十六进制的,需要把表情符转码成八进制的。

下面是我用到的代码:

   
//把utF16的emoji表情字符进行转码成八进制的字符
function utf16toEntITies(str) {
    VAR patt = /[ud800-udbff][udc00-uDFff]/g; // 检测utf16字符正则  
    return 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;
        }
    });
}

//将编码后的八进制的emoji表情重新解码成十六进制的表情字符
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);
    });
}

脚本宝典总结

以上是脚本宝典为你收集整理的微信小程序或者前端,输入键盘自带的emoji表情的编码解码全部内容,希望文章能够帮你解决微信小程序或者前端,输入键盘自带的emoji表情的编码解码所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。