【问题描述】

微信小程序开发,商户授权给用户后,用户便可关注小程序。有的用户的微信账户号中带有emoji表情,这样的话,直接存储到mysql5.5以下版本的数据库中会报异常。项目中的mysql数据库的版本是5.1.8的。

【问题缘由】

emoji是4个字节的,因为编码方式不同,所以如果将emoji表情直接存入utf8编码的数据库,会报错,存不进去。

【解决方案】

一. 修改数据库编码方式(mysql的版本必须为v5.5.3或更高)
1. 把数据库的编码改成utf8mb4 – UTF-8 Unicode
2. 将需要存储emoji表情的字段选择utf8mb4_general_ci
3. 数据库连接也需要改为utf8mb4
设置完成后,应该可以看到如下类似字符集设置结果。那么可以直接的存入数据库,无需做任何额外的事情了。

二. 存之前base64_encode(),取的时候base64_decode()
1. 采用的是Apache Commons Codec作法,Apache Commons Codec有提供Base64的编码与解码功能,会使用到org.apache.commons.codec.binary套件下的Base64类别,用法如下:
final Base64 base64 = new Base64();
final String text = "字串文字";
final byte[] textByte = text.getBytes("UTF-8");
//编码
final String encodedText = base64.encodeToString(textByte);
System.out.println(encodedText);
//解码
System.out.println(new String(base64.decode(encodedText), "UTF-8"));
2. Java 8之后的作法,Java 8的java.util中,新增了Base64的类别,可以用来处理Base64的编码与解码,用法如下:
final Base64.Decoder decoder = Base64.getDecoder();
final Base64.Encoder encoder = Base64.getEncoder();
final String text = "字串文字";
final byte[] textByte = text.getBytes("UTF-8");
//编码
final String encodedText = encoder.encodeToString(textByte);
System.out.println(encodedText);
//解码
System.out.println(new String(decoder.decode(encodedText), "UTF-8"));

微信小程序中使用emoji表情相关推荐

  1. 微信小程序中使用emoji表情相关说明

    本帖将聚合一些跟emoji表情有关的知识:前端传过来的昵称和备注信息一定要经过严格的正则表达式过滤,放置出现XSS等攻击,另外emoji字体表情库应该使用base64_encode编码,拿信息的时候b ...

  2. php转换emoji表情为图片输出小程序,微信小程序中使用emoji表情相关说明

    本帖将聚合一些跟emoji表情有关的知识:相关文章:"i爱记账" 小程序后端开发小结 第7条经验前端传过来的昵称和备注信息一定要经过严格的正则表达式过滤,放置出现XSS等攻击,另外 ...

  3. H5小程序中实现emoji表情

    H5页面&小程序如何实现emoji表情? emoji表情都非常熟悉了,比如微信的会话窗口可以发表情. 但是仔细看有一个重要的发现,比如朋友给你发一个emoji表情,在聊天会话列表页查看最近消息 ...

  4. 微信小程序开发系列(五)——小程序中存储emoji表情符

    我的小程序整个架构是 app+ asp.net + mysql 因为在"短信定时提醒"中的"随手记"里想存储表情符,所以还是经过了一番折腾的. 首先上网查遍了e ...

  5. 微信小程序setinterval_微信小程序中setInterval的使用方法

    微信小程序中setinterval的使用方法 看了下小程序的画布功能,简单的使用了一下,用蹩脚的逻辑做了个 "弹啊弹,弹走鱼尾纹的小球",一起来看下吧.过程不重要主要是画布的使用哦 ...

  6. Canvas绘图在微信小程序中的应用:生成个性化海报

    Canvas绘图在微信小程序中的应用:生成个性化海报 如极客时间的一些实现案例: 基础语法 Canvas本质是一个可以使用脚本(通常为JavaScript)来绘制图形的 HTML 元素,默认大小为30 ...

  7. 微信小程序中this指向作用域问题this.setData is not a function报错

    在微信小程序中我们一般通过以下方式来修改data中的数据 this.setData({index1: e.detail.value}) 比如在函数里面修改数据 bindFaChange1: funct ...

  8. 在微信小程序中绘制图表(part2)

    本期大纲 1.确定纵坐标的范围并绘制 2.根据真实数据绘制折线 相关阅读: 在微信小程序中绘制图表(part1) 在微信小程序中绘制图表(part3) 关注我的 github 项目 查看完整代码. 确 ...

  9. 微信小程序中带参数返回上一页的方法总结(三种)

    本篇文章给大家带来的内容是关于微信小程序中带参数返回上一页的方法总结(三种),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 方法一 把当前页面数据放入本地缓存( wx.setStor ...

  10. 微信小程序中实现瀑布流布局和无限加载

    瀑布流布局是一种比较流行的页面布局方式,最典型的就是Pinterest.com,每个卡片的高度不都一样,形成一种参差不齐的美感. 在HTML5中,我们可以找到很多基于jQuery之类实现的瀑布流布局插 ...

最新文章

  1. vue 模板_简化版的 vue 页面模板语法
  2. Spring Boot 和Apache Kafka的集成
  3. java当中的定时器怎么做_java当中的定时器的4种使用方式
  4. python字典赋值方法_python如何给字典的键对应的值为字典项的字典赋值
  5. mysql 连接 中文_大佬们E语言连接MYSQL输出中文乱码怎么破
  6. 数据图表与分析图_几种可视化数据分析图表的使用
  7. Javaweb MVC设计模式、Modle发展史、项目分层和三层架构
  8. 基于JAVA+Servlet+JSP+MYSQL的图书馆座位预约系统
  9. 给Android SDK设置环境变量
  10. go日志收集系统项目简介
  11. oracle 2的22次方,22的2次方(2的22的2次方等于多少)
  12. 关于程序员的996,我们谈谈历史和逻辑
  13. 成长篇之代码灵异事件
  14. allt什么意思_all是什么意思_all怎么读_all翻译_用法_发音_词组_同反义词_全部的-新东方在线英语词典...
  15. 云和恩墨数据库MogDB荣获2021年度IT168最佳创新产品奖
  16. 任正非:宁赔10亿,也要辞退7000员工!华为卸磨杀驴?却获网友点赞!
  17. 基于业务描述语言BDL的需求方法论
  18. 微信直播应该如何引流呢
  19. 流量为王:收益最大化的混排机制
  20. LTE物理传输资源(3)-时频资源

热门文章

  1. PicSizer-将图片压缩到指定大小(KB)的软件
  2. Voicemeeter Potato —— Windows 平台下的终极虚拟音频混音器
  3. AI教程视频《AI illustrator入门到精通》零基础自学教程教学
  4. jeesite中日期插件
  5. 使用SpringCloud实现Java分布式开发【part-2】:Ribbon负载均衡的介绍及使用方式
  6. 一步到位,直播系统源代码搭建直播推流服务器
  7. 将微信表情包保存为图片
  8. 程序员的思维修炼:开发认知潜能的九堂课
  9. JavaScript时间格式化工具函数
  10. Android重新分区parted,分区工具parted的详解及常用分区使用方法【转】