跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

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

精选回复

发布于

表情符的编码解码

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

下面是我用到的代码:

//把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);
    });
}
表情符的编码解码 网上有给出一些解决方法,比如加载表情符图片,修改数据库的字符编码等,这些方法都不太好,也没有解决问题,后面找了比较久才找到合适的解决的方法:表情符编码是十六进制的,需要把表情符转码成八进制的。 下面是我用到的代码: //把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); }); }

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。