`
cfyme
  • 浏览: 276496 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

解决发送push的emoji表情的实用方案

 
阅读更多

    push在发送的时候,有些emoji表情添加不进去,原因是:一个普通中文字符存入数据库时占用3个字节,某些特殊表情会自动占用4个字节,mysqlutf8一个字符最多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);
		}
	}

 

 

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

分享到:
评论

相关推荐

    微信emoji表情包.rar

    在IT行业中,尤其是在社交软件的使用中,表情符号(emoji)扮演着重要的角色,它们能够丰富文字交流,增强表达力,使沟通更加生动有趣。微信作为中国最受欢迎的即时通讯应用之一,内置了大量的emoji表情供用户选择。...

    解决添加emoji表情报错的方案.txt

    解决页面添加微信emoji表情保存入库,修改mysql数据库的utf-8编码为utf8mb4编码,采用utf8mb4编码的好处是:存储与获取数据的时候,不用再考虑表情字符的编码与解码问题。

    2020年抖音官方emoji表情

    抖音官方emoji表情包提供了以webp格式呈现的表情,这种格式为谷歌所开发,旨在为图像文件提供一种更加高效和轻量级的解决方案。Webp格式能够以更小的文件大小,保持与传统JPEG、PNG格式相当的图像质量,这对于像抖音...

    emoji表情png图片

    在IT行业中,emoji表情已经成为日常交流和在线沟通的重要组成部分,特别是在移动设备和Web应用上。本文将详细讨论“emoji表情png图片”相关的知识点,包括它们的格式、用途、跨平台兼容性以及如何在不同系统中使用。...

    Unity开发对Emoji表情包图文混排进行处理显示(支持大多数表情)

    在Unity游戏开发中,涉及到与用户交互的界面时,经常需要处理文本输入,其中包括了越来越多的用户喜欢使用的Emoji表情。本文将深入探讨如何在Unity中处理Emoji表情包,实现图文混排的显示,并确保对大多数表情的支持...

    Android 软键盘和emoji表情切换方案,和微信几乎一样的体验

    本方案将探讨如何在Android应用中实现类似微信的软键盘与emoji表情切换效果。 首先,我们需要理解Android系统中软键盘的管理机制。在Android中,应用程序通过EditText组件来接收用户输入,当EditText获得焦点时,...

    微信Emoji表情带文件名149个打包.zip

    总的来说,这个“微信Emoji表情带文件名149个打包.zip”文件是微信用户和开发者的一个实用资源,它涵盖了从基本的文件管理和表情使用,到更高级的编程和数据分析等多个IT领域的相关知识。无论是为了日常聊天的乐趣,...

    emoji表情web处理

    在Web开发中,emoji表情已经成为用户交流不可或缺的一部分,特别是在社交网络和聊天应用中。iOS和Android设备用户在输入时会使用各自平台特定的emoji表情符号,这些符号在不同的操作系统和浏览器上可能显示不一致,...

    Emoji表情全部图片(PNG)资源,共3175张,尺寸72x72

    在IT行业中,尤其是在移动应用开发、网页设计以及社交媒体互动中,Emoji表情的使用已经变得非常普遍。它们是一种直观且富有表现力的方式,帮助用户在文本中传达情感和情绪。本资源包提供了3175张PNG格式的Emoji表情...

    java解析emoji表情存入oracle,并正常使用

    在IT行业中,数据库管理和编程语言的交互是常见的工作场景,特别是在处理特殊数据类型时,如emoji表情。Oracle数据库系统在设计之初并未考虑对Unicode扩展区域的全面支持,因此默认情况下无法直接存储和检索emoji...

    微信最新Emoji表情149个png打包.zip

    微信最新Emoji表情149个png打包.zip

    通用emoji表情包与JSON

    在IT行业中,emoji表情包已经成为了日常沟通的重要组成部分,特别是在社交网络、聊天应用以及各种Web应用中。这个主题“通用emoji表情包与JSON”涉及到如何将emoji集成到应用程序中,特别是利用JSON数据格式来存储和...

    非常全的emoji基本表情包

    总的来说,"非常全的emoji基本表情包"是一个对开发者极其实用的资源,无论是用于构建表情丰富的社交应用,还是在编写代码时增加可读性,都能发挥很大的作用。有了16进制名称的支持,开发者可以轻松地在程序中引用和...

    微信开发之emoji表情在网页上显示,很好用

    在微信开发过程中,有时我们需要在网页上展示用户发送的emoji表情,这为沟通增添了丰富的表现力。本教程将详细介绍如何在网页中正确显示这些表情,让用户体验更加生动有趣。 首先,我们要理解emoji表情的本质。它们...

    微信小程序添加emoji表情组件,雪碧图版本

    在微信小程序开发中,添加Emoji表情组件是一种常见的需求,特别是在社交类应用中,用户往往需要通过表情来丰富自己的表达。本文将详细介绍如何在微信小程序中实现一个基于雪碧图(Sprite Sheet)版本的Emoji表情组件...

    安卓端H5页面的emoji表情显示处理

    在安卓端开发H5页面时,常常会遇到用户在输入框中使用手机自带的emoji表情符号。这些表情字符在不同的设备、浏览器上可能显示不一致,甚至无法正确显示,因此需要进行特殊处理。本文将详细讲解如何处理Android平台上...

    emoji表情解析资源

    总之,“emoji表情解析资源”是一个关于如何在JavaScript环境中处理和显示emoji的实用工具或教程。通过理解和运用其中的知识,开发者能够更好地在Web应用中集成emoji,从而提升用户交互的趣味性和多样性。

    emoji 表情图片解决方法

    在IT行业中,尤其是在Web开发和社交媒体交互中,emoji表情图片的使用已经成为了一种常见的交流方式。然而,处理这些表情图片可能会遇到一些问题,比如显示不全、格式不兼容或者加载速度慢等。本文将深入探讨如何有效...

    Android-这是一款高度自定义的emoji表情实现方案

    "Emoji-master"项目就是一个这样的解决方案,它提供了丰富的emoji资源和灵活的集成方式。该项目的核心是创建一个可扩展的emoji键盘,让用户在应用中方便地选择和输入emoji。下面将分步骤介绍其主要实现过程: 1. **...

    Emoji表情的转码和解码

    本工具类包含了Emoji表情的转码和解码 包括了通过url获取文件大小的功能

Global site tag (gtag.js) - Google Analytics