push在发送的时候,有些emoji表情添加不进去,原因是:一个普通中文字符存入数据库时占用3个字节,某些特殊表情会自动占用4个字节,mysql的utf8一个字符最多3字节,而如果要修改为支持4个字节的需要修改数据库配置编码为utf8mb4,但是需要停机重启数据库,由于不能影响线上核心业务,停机成本有点大,所以最终放弃了修改编码的方案。

但是,为了满足运营人员需要发送带有特殊符号的push表情,晚上睡觉想了想一些方案,都是以失败告终,第二天想到了一个比较挫的方案,但的确是实用的,因为那些特殊表情数量可能不大,难道一定要存储到数据库吗,我可以写死在java代码里面啊,果断实践,第二天将知知需要的特殊表情搜集起来,存储在java的一个map中,后台在录入表情的时候,就不粘贴表情符号了,而是输入该特殊表情的替代key,在发送push的时候,就把key替换为真正的表情的value。

测试,上线,问题搞定,该方案的缺点是缺乏灵活的配置性,下次增加新的表情的时候,需要我再次手动添加上去,但不管怎样,总比没有表情要好吧。

 1,定义emoji的表情常量类:

   

package com.taofen8.mobile.constant;import java.util.HashMap;/*** push表情* 如果数据库的编码修改为utf8mb4,线上要重启才有效果,不然保存某些表情会报错* 但需要重启数据库,所以放弃修改字符集的方案,把运营需要发push的表情定义在这个类中* 缺点是:如果运营需要增加表情,需要手动添加到该类中,缺乏灵活的配置性* @author caofy**/
public class PushBiaoQing {public static HashMap<String, String> map = new HashMap<String, String>();static{/*** 主要后面的框框,看上去一样,其实是不同的表情额*/map.put("#biaoqing_xiangyou#", "拷贝过来的表情"); map.put("#biaoqing_xiangzuo#", "拷贝过来的表情"); map.put("#biaoqing_damuzhi#", "拷贝过来的表情"); map.put("#biaoqing_haode#", "拷贝过来的表情"); map.put("#biaoqing_aixin4#", "拷贝过来的表情"); map.put("#biaoqing_aixin5#", "拷贝过来的表情"); map.put("#biaoqing_free#", "拷贝过来的表情"); map.put("#biaoqing_new#", "拷贝过来的表情"); map.put("#biaoqing_ok#", "拷贝过来的表情");        }
}

 

 1,发送push的时候,替换为真正的emoji表情的方法:

   

private void replaceBiaoQing(List<MobilePushSpecial> list) {if(CollectionUtils.isEmpty(list)){return;}for(MobilePushSpecial obj : list){String message = obj.getMessage();Iterator<Map.Entry<String, String>> iterator = PushBiaoQing.map.entrySet().iterator();while (iterator.hasNext()) {Map.Entry<String, String> entry = (Map.Entry<String, String>)iterator.next();String key = entry.getKey();String value = entry.getValue();message = message.replaceAll(key, value);}obj.setMessage(message);}}

 

    总结:有时候遇到问题的时候,不要放弃,方法总比苦难多,不要在一个树上吊死,不求技术高深,不管黑猫白猫,能解决业务需求的办法就是好办法。

解决发送push的emoji表情的实用方案相关推荐

  1. 微信小程序、uniapp、H5——发送、显示emoji表情

    小伙伴们,在开发中有没有遇到过发布帖子或者实时聊天需要发送到一些emoji表情的. 但是每当我们直接将emoji表情提交到后台的接口又会报错,因为字符串的格式不一致导致数据无法添加致数据库. 那么作为 ...

  2. 解决mysql特殊字符或者Emoji表情插入报错问题

    解决mysql特殊字符或者Emoji表情插入报错问题 原因: MySQL的utf8编码最多3个字节,Emoji表情或者某些特殊字符是4个字节,所以数据插入不了,需要修改编码. 在MySQL 的&quo ...

  3. 【已解决】Mysql 存储 emoji 表情报错 Incorrect string value: ‘\xF0\x9F\x98\x82\xF0\x9F

    mysql 库.表.字段 字符集从 utf8 改为 utf8mb4 校验规则改为 utf8mb4_unicode_ci

  4. 记录--微信小程序,uniapp,H5端发送,显示emoji表情

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 小伙伴们,在开发中有没有遇到过发布帖子或者实时聊天需要发送到一些emoji表情的. 但是每当我们直接将emoji表情提交到后台的接口又会报 ...

  5. html怎么发送表情,前端怎么解决emoji表情无法发送的BUG

    之前在做移动端开发时候,有一个发表评论的功能需要实现,虽然这个功能 比较简单能做出来,但是我在测试的时候说手机自带的emoji表情发送失败的BUG总是出现,所以今天给大家带来出现这种BUG的解决方法 ...

  6. emoji表情乱码php,推送emoji表情乱码的解决方法

    推送内容如果包含了emoji表情,需要做以下修改 1 mysql 要用5.5.3以上版本(如果不能升级,请用base64保存,推送时再转码) 2 将表和推送内容表字段修改成utf8mb4_unicod ...

  7. java emoji显示乱码_Java 解决Emoji表情过滤问题

    Emoji表情从三方数据中获取没有过滤,导致存入DB的时候报错. 原因: UTF-8编码有可能是两个.三个.四个字节.Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去 ...

  8. mysql不支持emoji表情的问题的解决方法

    mysql不支持emoji表情的问题的解决方法 参考文章: (1)mysql不支持emoji表情的问题的解决方法 (2)https://www.cnblogs.com/flywang/p/851420 ...

  9. Mysql 解决emoji表情处理问题 - Incorrect string value: ‘\xF0\x9F\x92\x94‘ for column

    Mysql 解决emoji表情处理问题 - Incorrect string value: '\xF0\x9F\x92\x94' for column 参考文章: (1)Mysql 解决emoji表情 ...

  10. 前端emojs_Emoji-Chat emoji表情包发送及显示兼容web端、移动端

    序言 在如今聊天表情包满天飞的当下,聊天过程中想发送个表情感慨一下情绪在所难免,当下我就遇到这么个需求,希望在web端聊天室中可以发送表情,还得在web端.微信H5.app端.微信公众号里均可以正常显 ...

最新文章

  1. SAP MM 维护公司间STO报错-No delivery type defined for supplying plant NMI1 and document type NB-
  2. Python程序的函数和代码复用
  3. zabbix服务无法启动
  4. C#学习之三层架构实例
  5. 解决阿里云postfix无法发送邮件问题
  6. 开课吧Java课堂:是什么是比较函数?
  7. w3school和w3cschool两个网站有什么关系和区别?(转)
  8. JAVA反射--通过反射对pojo进行UT覆盖率测试
  9. 《Java1996》詹姆斯·高斯林简介
  10. GitHub怎么搜索项目
  11. Java 解析Tiff深入研究
  12. 【汉字转拼音工具】Java 汉字转拼音
  13. Metal 框架之资源存储模式
  14. 融汇悦生活赴港递交招股书:母公司依赖症难解,独立性存疑
  15. MySql基本查询、连接查询、子查询、正则表达查询讲解
  16. Springboot+Redis初体验
  17. 洛谷P3758/BZOJ4887 [TJOI2017] 可乐 [矩阵快速幂]
  18. 2022茶艺师(中级)复训题库及模拟考试
  19. egg.js框架的基本设置 及 使用
  20. windows下Appium测试环境搭建, 并配合python操作模拟器

热门文章

  1. 判断SuperView
  2. 《wireshark》怎么抓包
  3. 武昌理工学院计算机巧业怎样,最潮高校宿管员巧念育人经 做学生们的“知心大姐”...
  4. 2021-02-24 bat 批处理教程
  5. 彪悍的人生不需要解释,需要解释的人生是软弱的
  6. 靶机渗透之Typhoon实战
  7. 教你怎么免费升级宝塔企业版和专业版
  8. 2021强网杯青少年专项赛-科普赛 WP
  9. 计算机职高会考知识,高职考试语文基础知识
  10. 我对智能网卡offload的认识