java 保存微信表情_Java微信公众号开发之用户表情存储解决方案
1.问题产生情况
我遇到这个问题是做微信开发的时候有些有用的头像用了微信的emoji表情,然而我的mysql数据库用的编码是utf8_general_ci,就是utf-8编码,结果也就报错误了。
2.为什么会出现这种原因
因为mysql的utf8编码的一个字符最多3个字节,但是一个emoji表情为4个字节,所以utf8不支持存储emoji表情。但是utf8的超集utf8mb4一个字符最多能有4字节,所以能支持emoji表情的存储。
3.解决方法之一
把你的数据库编码集设置为utf8mb4,无论是数据库还是表,还是字段。虽然会增加存储,但是这个可以忽略不计。
4.解决方法之二
有句话说得好,问题来了要么解决要么折中解决。如果有些原因你不能修改数据库编码之类的,你可以用java的一些插件,如emoji-java这种emoji表情插件对表情进行特殊处理,然后保存或者去掉表情,这也是一种解决方法哦。
5.最后说点什么
通过对一个问题不同角度的思考,原来才发现世界同而不同,不同而同......
最后来段代码:
import com.github.binarywang.java.emoji.EmojiConverter;
/**
* 表情处理类
* @author Administrator
*
*/
public final class EmojiUtil {
private static EmojiConverter emojiConverter = EmojiConverter.getInstance();
/**
* 将emojiStr转为 带有表情的字符
* @param emojiStr
* @return
*/
public static String emojiConverterUnicodeStr(String emojiStr){
String result = emojiConverter.toUnicode(emojiStr);
return result;
}
/**
* 带有表情的字符串转换为编码
* @param str
* @return
*/
public static String emojiConverterToAlias(String str){
String result=emojiConverter.toAlias(str);
return result;
}
}
使用的框架是java-emoji-converter,引入以下maven依赖:
com.github.binarywang
java-emoji-converter
0.0.1
本文同步分享在 博客“Thinkingcao”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
java 保存微信表情_Java微信公众号开发之用户表情存储解决方案相关推荐
- 微信公众号开发 - 发送Emoji表情
微信公众号开发文章目录 1.微信公众号开发 - 环境搭建 2.微信公众号开发 - 配置表设计以及接入公众号接口开发 3.微信公众号开发 - token获取(保证同一时间段内只请求一次) 4.微信公众号 ...
- 微信开发者工具,调试公众号网页,控制台不显示,解决方案
微信开发者工具,调试公众号网页,控制台不显示,解决方案 第一步:关闭"微信开发者工具" 第二步:在C盘找到该路径 C:\Users\当前系统用户名\AppData\Local\ 在 ...
- 微信小程序和公众号开发流程
最近在公司参与微信小程序的开发,小程序近几年非常火,通过最近的学习分享一下开发微信小程序的流程 1.了解一下微信官方开发公众号文档 微信官方文档-公众号 对文档介绍有一个大致的印象,然后开始动手配置 ...
- 微信公众号开发 - 引导用户关注、一键关注
1. 打开公众号,点击右上角人像图标 2. 点击查看"全部消息" 3. 点击右上角三个点的图标,然后"复制链接" 4. 获得以下链接(其中红色字体是该公众号的唯 ...
- 公众号开发: 给用户发红包
红包功能简单介绍: 1.商户调用接口时,通过指定发送对象以及发送金额的方式发放红包,这样的方式,允许商户灵活的应用于各种各样丰富的活动场景 2.领取到红包后,用户的资金直接进入微信零钱,避免繁复的领奖 ...
- 微信公众号开发--获取用户信息中文乱码的解决方案
在微信开发中我们会经常需要获取用户的信息. 微信给我们提供了获取用户信息的api, 地址为 https://api.weixin.qq.com/cgi-bin/user/info?access_tok ...
- 移动端微信公众号开发中问题记录及解决方案
1. 关于字体大小.图片大小.块元素大小的确定,目前一种方法,使用rem,rem的计算方式 document.documentElement.style.fontSize = document.doc ...
- 微信公众号开发之用户分组
具体参照微信官方文档. 创建用户分组 /*** 创建分组* @param groupName 分组名* @return Integer 分组ID*/ public static Integer cre ...
- 微信公众号开发——实现用户微信网页授权流程
最新文章
- 未转变者空投指令服务器,未转变者空投指令 | 手游网游页游攻略大全
- WPF canvas、基本图形、path几个示例
- OpenCASCADE:绘制演示脚本
- oracle数据库函数手册,oracle函数大全连载(四)T
- mybits注解详解
- 实验14:访问CMOS RAM显示当前日期和时间
- Vue学习-基本指令
- html三列布局和两列布局,CSS 常见两列布局、三列布局
- Oracle Sequence创建与使用
- webservice 参数太大_webservice大数据
- Android如何进行反编译
- 十四步实现拥有强大AI的五子棋游
- RPGMAKER游戏引擎基于JavaScript的插件制作(一)——前期准备以及RPGMAKER内建逻辑
- 主板风扇转不开机是什么问题_cpu风扇转主板不启动怎么办
- 关于VS.NET中多个项目的工程相互引用和多个dll引用的问题! - antony--异域空间 - 博客园
- 云原生(三十九) | Kubernetes篇之kustomize入门了解
- ADI公司高速PCB布板指南
- muduo学习笔记:net部分之实现TCP网络编程库-Buffer
- 五月集训总结——来自阿光
- 国际赛事 中国魅力——天南铜都“中国东川泥石流国际汽车越野赛”