java Mysql 存储emoji表情解决方案

1 篇文章 0 订阅
1 篇文章 0 订阅

在进行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表情字符串的处理,到此结束。

有什么问题大家可以留言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值