首页 > mysql教程 阅读:0更新时间:2020-12-13 05:41:35

java Mysql 存储emoji表情解决方案

在进行mysql 存储的时候,发现在保存带有emoji表情的时候,保存失败,错误信息为:

这里写图片描述

出现的原因

  • 经过网上查阅发现,mysql字符集大多数使用的是utf8,而mysql的utf8编码的一个字符最多3个字节,但是一个emoji表情为4个字节,所以utf8不支持存储emoji表情。但是utf8的超集utf8mb4一个字符最多能有4字节,所以能支持emoji表情的存储,并且兼容utf8

觖决方法

  • 方法一
    • 修改数据库编码集设置为utf8mb4,无论是数据库还是表,还是字段
  • 方法二
    • 如果有些原因你不能修改数据库编码或者其他原因,有一个插件可以帮到你,我也是用这种方式处理的,emoji-java这个类库,它可以帮你去掉表情,或者以其他可以存储的字符来代替emoji表情,话不多说,看代码:

  • 首先加入依赖

    这里写图片描述

  • 存储过程中的中文示例:

这里写图片描述


  • 下面是利用emoji-java类库的代码片断:
public static void main(String[] args) {
        Map map = new HashMap();
        map.put("name", "\ud83d\ude04正常中文\ud83d\ude04");
        map.put("name2", "\ud83d\ude0d\u8c22\ud83d\ude0d");
        map.put("desc", "其他");
        JSONObject json = (JSONObject) JSON.toJSON(map);
        System.out.println("带有emoji表情的字符串打印效果: " + json.toString());
        System.out.println("去掉emoji表情的字符串打印效果: " + EmojiParser.removeAllEmojis(json.toString()));
        System.out.println("将emoji表情转换成别名的形式: " + EmojiParser.parseToAliases(json.toString()));
        System.out.println("将emoji表情转换成html十进制表示: " + EmojiParser.parseToHtmlDecimal(json.toString()));
    }
  • 运行结果为:

这里写图片描述


从运行结果可以看出,emoji-java类库很好的处理了emoji表情字符串的处理,到此结束。

有什么问题大家可以留言

beylze编程学院,一个分享编程知识和seo优化知识的网站。跟着beylze一起学习,每天都有进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

文章不深奥,不需要钻研,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。

文章不涉及代码,不烧脑细胞,人人都可以学习。

当你决定关注beylze(公众号:beylze),你已然超越了90%的其他从业者!

相关文章