因为表情符号是四个字节,数据库中utf8是三个字节,所以存入sql数据库会报错
解决办法一:
直接修改数据库字符集编码格式
把utf8格式改成utf8mb4的格式就可以了
这样表情符号就可以直接存入数据库了
解决办法二:
不改变数据库从代码的层次来解决
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}}
实际现实的样式
我们需要在标签中加入v-html 属性
{{item.customerNickName}}
加入后显示:
因为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;
},
然后直接引用这个方法处理一下就可以了,就可以显示原来的表情了
参考地址