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微信公众号开发之用户表情存储解决方案相关推荐

  1. 微信公众号开发 - 发送Emoji表情

    微信公众号开发文章目录 1.微信公众号开发 - 环境搭建 2.微信公众号开发 - 配置表设计以及接入公众号接口开发 3.微信公众号开发 - token获取(保证同一时间段内只请求一次) 4.微信公众号 ...

  2. 微信开发者工具,调试公众号网页,控制台不显示,解决方案

    微信开发者工具,调试公众号网页,控制台不显示,解决方案 第一步:关闭"微信开发者工具" 第二步:在C盘找到该路径 C:\Users\当前系统用户名\AppData\Local\ 在 ...

  3. 微信小程序和公众号开发流程

    最近在公司参与微信小程序的开发,小程序近几年非常火,通过最近的学习分享一下开发微信小程序的流程 1.了解一下微信官方开发公众号文档 微信官方文档-公众号 对文档介绍有一个大致的印象,然后开始动手配置 ...

  4. 微信公众号开发 - 引导用户关注、一键关注

    1. 打开公众号,点击右上角人像图标 2. 点击查看"全部消息" 3. 点击右上角三个点的图标,然后"复制链接" 4. 获得以下链接(其中红色字体是该公众号的唯 ...

  5. 公众号开发: 给用户发红包

    红包功能简单介绍: 1.商户调用接口时,通过指定发送对象以及发送金额的方式发放红包,这样的方式,允许商户灵活的应用于各种各样丰富的活动场景 2.领取到红包后,用户的资金直接进入微信零钱,避免繁复的领奖 ...

  6. 微信公众号开发--获取用户信息中文乱码的解决方案

    在微信开发中我们会经常需要获取用户的信息. 微信给我们提供了获取用户信息的api, 地址为 https://api.weixin.qq.com/cgi-bin/user/info?access_tok ...

  7. 移动端微信公众号开发中问题记录及解决方案

    1. 关于字体大小.图片大小.块元素大小的确定,目前一种方法,使用rem,rem的计算方式 document.documentElement.style.fontSize = document.doc ...

  8. 微信公众号开发之用户分组

    具体参照微信官方文档. 创建用户分组 /*** 创建分组* @param groupName 分组名* @return Integer 分组ID*/ public static Integer cre ...

  9. 微信公众号开发——实现用户微信网页授权流程

最新文章

  1. 未转变者空投指令服务器,未转变者空投指令 | 手游网游页游攻略大全
  2. WPF canvas、基本图形、path几个示例
  3. OpenCASCADE:绘制演示脚本
  4. oracle数据库函数手册,oracle函数大全连载(四)T
  5. mybits注解详解
  6. 实验14:访问CMOS RAM显示当前日期和时间
  7. Vue学习-基本指令
  8. html三列布局和两列布局,CSS 常见两列布局、三列布局
  9. Oracle Sequence创建与使用
  10. webservice 参数太大_webservice大数据
  11. Android如何进行反编译
  12. 十四步实现拥有强大AI的五子棋游
  13. RPGMAKER游戏引擎基于JavaScript的插件制作(一)——前期准备以及RPGMAKER内建逻辑
  14. 主板风扇转不开机是什么问题_cpu风扇转主板不启动怎么办
  15. 关于VS.NET中多个项目的工程相互引用和多个dll引用的问题! - antony--异域空间 - 博客园
  16. 云原生(三十九) | Kubernetes篇之kustomize入门了解
  17. ADI公司高速PCB布板指南
  18. muduo学习笔记:net部分之实现TCP网络编程库-Buffer
  19. 五月集训总结——来自阿光
  20. 国际赛事 中国魅力——天南铜都“中国东川泥石流国际汽车越野赛”

热门文章

  1. python创建数据库字数不限制_KindEditor设置字数限制
  2. Mac 移动硬盘突然自己异常退出了(一)
  3. zxing二维码的使用
  4. 教你如何有效防止DDos攻击?
  5. 深度学习-深度学习集群管理方案
  6. Java中四舍五入和四舍六入五成双
  7. git 教程(12)--分支管理
  8. 前端人应该知道的 Centos/Docker/Nginx/Node/Jenkins 的基本操作
  9. 达梦数据库监控-DEM 部署
  10. 《Effective Python 编写高质量Python代码的59个有效方法》读书笔记