java emoji编码转换_java转换emoji表情
/**
* @Description 将字符串中的emoji表情转换成可以在utf-8字符集数据库中保存的格式(表情占4个字节,需要utf8mb4字符集)
* @param str
* 待转换字符串
* @return 转换后字符串
* @throws UnsupportedEncodingException
* exception
*/
public static String emojiConvert1(String str)
throws UnsupportedEncodingException {
String patternString = "([\\x{10000}-\\x{10ffff}\ud800-\udfff])";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(str);
StringBuffer sb = new StringBuffer();
while(matcher.find()) {
try {
matcher.appendReplacement(
sb,
"[["
+ URLEncoder.encode(matcher.group(1),
"UTF-8") + "]]");
} catch(UnsupportedEncodingException e) {
LOG.error("emojiConvert error", e);
throw e;
}
}
matcher.appendTail(sb);
LOG.debug("emojiConvert " + str + " to " + sb.toString()
+ ", len:" + sb.length());
return sb.toString();
}
/**
* @Description 还原utf8数据库中保存的含转换后emoji表情的字符串
* @param str
* 转换后的字符串
* @return 转换前的字符串
* @throws UnsupportedEncodingException
* exception
*/
public static String emojiRecovery2(String str)
throws UnsupportedEncodingException {
String patternString = "\\[\\[(.*?)\\]\\]";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(str);
StringBuffer sb = new StringBuffer();
while(matcher.find()) {
try {
matcher.appendReplacement(sb,
URLDecoder.decode(matcher.group(1), "UTF-8"));
} catch(UnsupportedEncodingException e) {
LOG.error("emojiRecovery error", e);
throw e;
}
}
matcher.appendTail(sb);
LOG.debug("emojiRecovery " + str + " to " + sb.toString());
return sb.toString();
}
来源:https://www.cnblogs.com/shihaiming/p/5833244.html
java emoji编码转换_java转换emoji表情相关推荐
- java字符编码采用_JAVA字符编码三:Java应用中的编码问题
1. 概述 本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等. 在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是" ...
- java字符编码问题_JAVA字符编码系列三:Java应用中的编码问题
1. 概述 本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等. 在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是" ...
- 华为java安全编码规范_Java安全编码之SQL注入
随着互联网的发展,Java语言在金融服务业.电子商务.大数据技术等方面的应用极其广泛.Java安全编码规范早已成为SDL中不可或缺的一部分.本文以Java项目广泛采用的两个框架Hibernate和My ...
- java多线程编码实现_Java多线程编码
Java多线程编码 多线程一直是编写程序代码的一个核心,Java中实现方法有以下两种: 一.继承自Thread class Mythread extends Thread [ //方法 public ...
- java emoji显示乱码_Java 解决Emoji表情过滤问题
Emoji表情从三方数据中获取没有过滤,导致存入DB的时候报错. 原因: UTF-8编码有可能是两个.三个.四个字节.Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去 ...
- java emoji显示乱码_Java处理emoji的方式
Java处理emoji的方式 问题由来: java后端获取微信小程序用户昵称含emoji时,显示乱码. 处理思路过滤 是当接收到客户端传过来得数据-->正则判断传过来的字符串中是否包含emoji ...
- java版 pdf转换_Java 转换 PDF 版本
在日常工作或生活中,我们使用的某些设备可能对PDF版本有严格要求,此时就需要更改PDF版本来适应设备.本文就将展示如何通过Free Spire.PDF for Java来转换PDF版本.(支持转换PD ...
- java file转输入流_Java转换流
前面提到IO流可分为字节流和字符流,有时字节流和字符流之间也需要进行转换.在JDK中提供了两个类可以将字节流转换为字符流,它们分别是InputStreamReader和OutputStreamWrit ...
- java ascii 编码方式_JAVA 的ASCII字符编码一览表
JAVA 的ASCII字符编码一览表 二进制 十进制 十六进制 缩写 可以显示的表示法 名称/意义 0000 0000 0 00 NUL ␀ 空字符(Null) 0000 0001 1 01 SOH ...
最新文章
- make menuconfig 错误
- VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION
- java学习(129):hashmap的方法
- All in Linux:一个算法工程师的IDE断奶之路
- 美团点评境外度假团队前端项目开发实践总结
- 60-150-046-使用-Sink-Flink落HDFS数据按事件时间分区解决方案
- python实现逆序输出一个数字
- (转)2012年度最佳Web前端开发工具和框架
- MATLAB学习笔记02-MATLAB的数据类型
- 索尼PS4破解之用户层代码执行(Part2)
- 找工作经历--生活的味道都在里面
- Elasticsearch(7.0.0) percolate termQuery 不好使 (type:text default analyzer)
- qcqa是什么职位_QA,QE是什么职位
- 用Python实现斗地主游戏(终端版)
- 【正则】1302- 快速上手常用正则表达式
- Python学习——异常
- guice的使用例子
- 2022新版云进销存系统ERP销售库存仓库员工管理系统源码
- Unable to install “xxxx”
- 期货开户办理银期转账签约的时间
热门文章
- ASP.NET Core 2.0 全局配置项
- DotNetCore跨平台~Dockerfile的解释
- 了解 C# foreach 内部语句和使用 yield 实现的自定义迭代器
- SuperSocket源码解析之开篇
- Spring Boot 解决跨域Cors问题
- ArcGIS实验教程——实验三十九:ArcGIS多元分类(ISO聚类分析、最大似然分类、主成分分析)案例教程
- Android Studio之查找当前类的位置图标没了
- Android之事件总线EventBus详解
- es mysql 同步插件_[es和数据库怎么同步]mysql与elasticsearch实时同步常用插件及优缺点对比(ES与关系型数据库同步)...
- php支持cs吗,关于composer、phpmd和phpcs于windows中的安装与使用方法