mysql emoji 数据_Mysql数据库存储emoji表情

emoji表情需要使用编码格式为utf8mb4,mysql数据库版本要5.5以上,我用的是5.6,因为只有5.5以上支持utf8mb4。

1.数据库编码设定为utf8mb4,如果建库时指定的是utf8,则需要执行语句:ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;

2.同时指定数据库配置参数中character_set_server改为utf8mb4

8850bf6c5e2c1e6e884043b35306bfd7.png

3.把对应的需要保存emoji表情的字段编码设置为utf8mb4_unicode_ci

4a146fb84a07db285b5661a492f6dd0d.png

4.配置完成,则可完美存储emoji表情了。

后续

最近发现很多新增的微信表情即使是使用了utf8mb4_unicode_ci编码也无法存储,所以索性直接使用base64加密后再存储,读取的时候解密即可,这样就不会在遇到这个令人头疼的问题了,加密解密算法如下:

注:解密算法我这边做了一些优化(因为之前数据表中存在一些未加密数据,直接解密会报错)

public staticString base64Encode(String str){

String result="";try{

result= new String (Base64.getEncoder().encode(str.getBytes("utf-8")),"utf-8");

}catch(Exception e) {

e.printStackTrace();

result="";

}

System.out.println(result);returnresult;

}public staticString base64Decode(String str){

String result="";

String base64Pattern= "^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$";if(Pattern.matches(base64Pattern, str)){try{

result= new String (Base64.getDecoder().decode(str.getBytes("utf-8")),"utf-8");

String badChar="�";if(result.contains(badChar)){

result=str;

}

}catch(Exception e) {

e.printStackTrace();

result=str;

}

}else{

result=checkNull(str);

}//System.out.println(result);

returnresult;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值