java 写入sql文件样式_java中表情符号存入mysql数据库报错

因为表情符号是四个字节,数据库中utf8是三个字节,所以存入sql数据库会报错

解决办法一:

直接修改数据库字符集编码格式

把utf8格式改成utf8mb4的格式就可以了

2f09b6506a95af53dd806f7fcc8960a3.png

这样表情符号就可以直接存入数据库了

解决办法二:

不改变数据库从代码的层次来解决

1、在pom.xml文件中引入jar包:

com.github.binarywang

java-emoji-converter

1.0.0

2、在需要存入数据库的时候进行转码处理

```java

EmojiConverter emojiConverter = EmojiConverter.getInstance();

String alias=emojiConverter.toHtml(ccMcsWechatUsersBo.getNickName());

ccMcsWechatUsersBo.setNickName(alias);

实际名称样式:![在这里插入图片描述](https://img-blog.csdnimg.cn/20200618152845856.jpg)

存入数据库的样式:

🍦🎤🛀 💕 极夜

在vue前端项目中我们现实用户名

```java

{{item.customerNickName}}

实际现实的样式

f364c030541e287de9334716c05074b0.png

我们需要在标签中加入v-html 属性

{{item.customerNickName}}

加入后显示:

d456277a43a3099def612ccfbe814cee.png

因为toHtml方法是转换成html code存放在数据库,在html中会自动转换成原来的表情(这一点是非常棒的!!)省了再转码的步骤

还有,如果直接想在js中完成转码也可以

//字符串转成表情

funcodeUtf16 (str){

var reg = /\.*?;/g;

var result = str.replace(reg,function(char){

var H,L,code;

if(char.length == 9 ){

code = parseInt(char.match(/[0-9]+/g));

H = Math.floor((code-0x10000) / 0x400)+0xD800;

L = (code - 0x10000) % 0x400 + 0xDC00;

return unescape("%u"+H.toString(16)+"%u"+L.toString(16));

}else{

return char;

}

});

return result;

},

然后直接引用这个方法处理一下就可以了,就可以显示原来的表情了

参考地址

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值