【微信公众号开发】【11】符号表情相关

本文介绍了解决表情符号在不同环境中显示问题的两种方法:一种是在JS中通过转码处理,另一种是使用emoji-java jar包进行解析。这两种方案适用于HTML显示正常但在微信推送中无法显示的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

1,符号表情有多种来源,微信表情,输入法表情等。提供了两种方案,建议选择方案2

2,在不一样的标签或场景中显示情况不一样,比如在HTML中显示正常,在微信推送消息中却无法显示,这里只能保证大部分情况和表情

2,处理方案1——转码;在JS中处理,

3,处理方案2——jar包

正文:

处理方案1——转码

JS:

/**
 * Unicode码点转成UTF-16
 * H = Math.floor((c-0x10000) / 0x400)+0xD800
 * L = (c - 0x10000) % 0x400 + 0xDC00
 */
/** 
 * 用于把用utf16编码的字符转换成实体字符,以供后台存储 
 * @param {string} str 将要转换的字符串,其中含有utf16字符将被自动检出 
 * @return {string} 转换后的字符串,utf16字符将被转换成&#xxxx;形式的实体字符 
*/ 
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; 
            } 
        }); 
    //console.log(str);    
    return str;
}

处理方案2——jar包

我的项目jar包是由Maven管理的(用自己的方式引入jar包即可)

<dependency>
  <groupId>com.vdurmont</groupId>
  <artifactId>emoji-java</artifactId>
  <version>4.0.0</version>
</dependency>
EmojiParser.parseToUnicode("XX") //EmojiParser还有其他方法,比如EmojiParser.removeAllEmojis()

 

转载于:https://www.cnblogs.com/huashengweilong/p/10399433.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值