您的位置:首页 > 编程语言 > Java开发

java web emoji表情显示

2015-12-18 09:35 645 查看
关于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
& 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端要评论 需要表情的时候我该如何存入库中呢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: