java版微信公众号、小程序菜单、客服消息发送emoji表情无法正常显示解决办法,以及mysql数据库存储emoji失败的解决办法

对于mysql数据库存储emoji出现的问题,可以把表改成 CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci,最好在新建库的时候就选择。

my.cnf里也加上

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

 

1、公众号菜单、客户消息发送带emoji的json

客服消息接口发送
html端配置
{
    "button":[
        {    
               "type":"view",
               "name":"🔥红红",
               "url":"http://baidu.com"
        }
    ]
}
后台程序收到前端
String s = "{\n" +
                        "    \"button\":[\n" +
                        "        {    \n" +
                        "               \"type\":\"view\",\n" +
                        "               \"name\":\"\uD83D\uDD25红红\",\n" +
                        "               \"url\":\"http://baidu.com\"\n" +
                        "        }\n" +
                        "    ]\n" +
                        "}";
发送到微信端的转成softbank版的小写再发送
 String s = "{\n" +
                        "    \"button\":[\n" +
                        "        {    \n" +
                        "               \"type\":\"view\",\n" +
                        "               \"name\":\"\ue11d红红\",\n" +
                        "               \"url\":\"http://baidu.com\"\n" +
                        "        }\n" +
                        "    ]\n" +
                        "}";
怎么把"\uD83D\uDD25"转成"\ue11d",可以创建映射的map来替换
        String s = "\uD83D\uDD25红红";
        Map<String, String> emoji = new HashMap<String,String>();
		emoji.put(":point_right:","\\ue231");//👉
		emoji.put(":point_left:","\\ue230");//👈
		emoji.put(":point_down:","\\ue22f");//👇
		emoji.put(":point_up_2:","\\ue22e");//👆
		emoji.put(":fire:","\\ue11d");//🔥
		emoji.put(":+1:","\\ue00e");//👍
		emoji.put(":bell:","\\ue325");//🔔
		emoji.put(":facepunch:","\\ue00d");//👊
		emoji.put(":joy:","\\ue056");//😊
		s = EmojiParser.parseToAliases(s);
		for(String key : emoji.keySet()){
			s = s.replace(key,emoji.get(key));
		}

2、公众号事件消息回复带emoji的xml

因为事件回复的是xml,直接在内容回复如"\uD83D\uDD25红红"这样是没有问题的

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值