emoji-converter

如果有人问你 MySql 怎么存取 Emoji,把这篇文章扔给他

穿精又带淫゛_ 提交于 2021-02-15 16:51:28
01、前言 Emoji 在我们生活中真的是越来越常见了,几乎每次发消息的时候不带个 Emoji,总觉得少了点什么,似乎干巴巴的文字已经无法承载我们丰富的感情了。对于我们开发者来说,如何将 Emoji 存入 MySql 数据库或者取出来,就变成了一种必须掌握的技能了。 <!--more--> Emoji 是一种图形符号,能够很直观地反应出某种文字含义。它让我想起远古时代的象形文字。 Emoji 其实是一个日语词(えもじ), E 表示"絵", moji 表示"文字";连在一起就是"絵文字",可以更形象化地表情达意。 02、糟糕 如果我们直接将 Emoji 表情存入数据库的话,通常会出现下面这个错误。 因为数据库的字符编码一般是 utf8(支持的编码范围为 \u0000-\uFFFF ),而 Emoji 所在的编码范围是 \u1F601-\u1F64F ,超出 MySql 的边界了。 怎么解决这个问题呢? 03、utf8mb4 可以将 MySql 的字符集由 utf8 调整为 utf8mb4。utf8mb4 是 MySql 在 5.5.3 版本之后增加的一个编码方式,用来兼容四字节的 Unicode(包括 Emoji)。 理论上,utf8mb4 是 utf8 的超集,其中 mb4 是 most bytes 4 的意思,将字符集修改为“utf8mb4”,并不会对已有的 utf8

java 处理emoji表情信息转换为String

一世执手 提交于 2020-08-11 05:13:02
2种方式实现: 注意:如果发现运行时java.lang.NoClassDefFoundError:异常就是缺少了jar包。添加对应的jar包就可以。 一、emoji-java-4.0.0.jar实现 <!--处理emoji表情--> <dependency> <groupId>com.vdurmont</groupId> <artifactId>emoji-java</artifactId> <version>4.0.0</version> </dependency> <!-- emoji表情依赖类--> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20180813</version> </dependency> 代码: public static void main(String args[]){ String str = "苍天厚土\uD83D\uDE01 \uD83D\uDC36 \uD83E\uDD14 \uD83D\uDC7B \uD83D\uDE92" ; System.out.println( "原始字符为:\n" + str); System.out.println( "to aliases 之后:" ); System.out.println

java和mysql对emoji特殊字符的处理

半腔热情 提交于 2020-08-06 01:40:07
设置数据库编码 1、mysql的版本必须为v5.5.3或更高 2、把数据库的编码改成utf8mb4 -- UTF-8 Unicode 3、然后需要存储emoji表情的字段选择utf8mb4_general_ci 4、数据库连接也需要改为utf8mb4 程序对字符转义处理 URLEncoder.encode()/URLDecoder.decode Base64.getEncoder().encode()/Base64.getDecoder().decode() emoji表情符号与unicode程序互转;或JDK自带工具$JAVA_HOME/bin/native2ascii https://github.com/binarywang/java-emoji-converter 来源: oschina 链接: https://my.oschina.net/wnjustdoit/blog/4274812

java emoji表情存储解决方案

时光毁灭记忆、已成空白 提交于 2020-05-06 06:47:05
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