资讯专栏INFORMATION COLUMN

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

he_xd / 3348人阅读

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

表情符的编码解码

我之前在做微信小程序的时候遇到了一个问题,一些让用户输入的地方,还有用户的微信昵称都有可能输入键盘自带的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);
    });
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/100681.html

相关文章

  • 关于input一些问题解决方法分享

    摘要:输入框首尾清除空格在中监听键盘事件移动端底部被弹出的键盘遮挡输入框是通过一直放在页面底部,当点击进行输入的时候,就会出现如下图片情况有的机型会遮挡一些。 前言 input是我们接受来自用户的数据常用标签,在前端开发中,相信每个人都会用到这个标签,所以在开发过程中也时候也会遇到一些问题,本文的内容是我在跟input相爱相杀过程中产生的,在此记录分享一下。如果喜欢的话可以点波赞/关注,支持...

    骞讳护 评论0 收藏0
  • 关于input一些问题解决方法分享

    摘要:输入框首尾清除空格在中监听键盘事件移动端底部被弹出的键盘遮挡输入框是通过一直放在页面底部,当点击进行输入的时候,就会出现如下图片情况有的机型会遮挡一些。 前言 input是我们接受来自用户的数据常用标签,在前端开发中,相信每个人都会用到这个标签,所以在开发过程中也时候也会遇到一些问题,本文的内容是我在跟input相爱相杀过程中产生的,在此记录分享一下。如果喜欢的话可以点波赞/关注,支持...

    vibiu 评论0 收藏0
  • 关于input一些问题解决方法分享

    摘要:输入框首尾清除空格在中监听键盘事件移动端底部被弹出的键盘遮挡输入框是通过一直放在页面底部,当点击进行输入的时候,就会出现如下图片情况有的机型会遮挡一些。 前言 input是我们接受来自用户的数据常用标签,在前端开发中,相信每个人都会用到这个标签,所以在开发过程中也时候也会遇到一些问题,本文的内容是我在跟input相爱相杀过程中产生的,在此记录分享一下。如果喜欢的话可以点波赞/关注,支持...

    chanjarster 评论0 收藏0
  • 那些年我们踩过乱码坑

    摘要:因此导致乱码的真正原因就是各平台间对标准实现不一致包括实现的时间先后不同,以及所代表含义不同。日本几家公司各自定义了一套标准,用两个字节表示符号,日本电脑系统的一种编码编码是从到。在上找到了与标准的对应关系。 欢迎关注个人网站:http://www.iamaddy.net/2016/07/emoji-unicode-parser/ 前言 这是一个由乱码引发的故事。抱歉我暂时找不到更加惨...

    jhhfft 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<