java web emoji表情显示

关于emoji表情显示 之前公司没想要做一个pc端程序,所以没有把表情定好规则,数据库中存储的是utf8mb4字符集  这个时候表情是需要转换的  在网上收到一篇文章 比较简单 不过后来还是实现了我想要的效果废话不多说了看效果吧



1、首先下载emoji的js相关内容和图片,里面包括demo使用,同时注意图片的路径,以免错误。

下载地址:http://download.csdn.net/detail/itlqi/9366281


2、下载完后,页面需要显示unicode编码的字符,数据库保存的是utf8mb4编码,进行编码转换

import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class EmojiUtil {
    
	/**
	 * 利用正则表达式判断str是否存在表情字符
	 * @param str
	 * @return
	 */
	public static String resolveToByteFromEmoji(String str) {
		Pattern pattern = Pattern
				.compile("[^(\u2E80-\u9FFF\\w\\s`~!@#\\$%\\^&\\*\\(\\)_+-?()——=\\[\\]{}\\|;。,、《》”:;“!……’:‘\"<,>\\.?/\\\\*)]");
		Matcher matcher = pattern.matcher(str);
		StringBuffer sb2 = new StringBuffer();
		while (matcher.find()) {
			matcher.appendReplacement(sb2, encode(matcher.group(0)));
		}
		matcher.appendTail(sb2);
		//将分隔符 替换成\ 得到的内容就是 \u1245
		return sb2.toString().replace("&ns;","\\");
	}
	  
	/**
	 * 表情字符进行处理
	 * @param str
	 * @return
	 */
	private static String encode(String str) {  
		  if (null == str || str.equals(""))  
			  return "";  
		  StringBuffer sb = new StringBuffer();  
		  try {  
			  //用16bit数字编码表示一个字符,每8bit用byte表示。  
			  byte bytesUtf16[] = str.getBytes("UTF-16");  
			  for (int n = 0; n < bytesUtf16.length; n++) {  
				  // 截取后面8位,并用16进制表示。  
				  str = (Integer.toHexString(bytesUtf16[n] & 0XFF));  
				  // 将获得的16进制表示连成串  
				  sb.append((str.length() == 1) ? ("0" + str) : str);  
			  }  
			  // 去除第一个标记字符  
			  str = sb.toString().toUpperCase().substring(4);  
			  char[] chs = str.toCharArray();  
			  StringBuffer buff=new StringBuffer();
			  // str = "";  
			  for (int i = 0; i < chs.length; i = i + 4) {  
				  //此处&ns;作为分割符号 本因是“\”但由于Matcher.appendReplacement()将会把 \给替换为空
				  buff.append( "&ns;u" + chs[i] + chs[i+1] + chs[i+2] + chs[i+3]);
			  }  
			  return buff.toString();
		  } catch (Exception e) {  
			  e.printStackTrace();
	        	return str;
		  }
	}  
	  
	  
	public static void main(String[] args) {
		String str="萨瓦迪卡&ns;uD83D&ns;uDE33&ns;uD83D&ns;uDE33&ns;uD83D&ns;uDE33";
		System.out.println(str.concat("&ns;"));
		System.out.println(str.replace("&ns;", "\\"));
	}
}

页面上需要调用

<script type="text/script">

//表情存在的div 页面上只要调用js就会扫描进行转换 拼装img 实现了图片显示 

$('.emoji').emoji();

<script>


到这里已经结束了 还有一个问题我pc端要评论 需要表情的时候我该如何存入库中呢


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值