Emoji表情是4个字节,而mysql的utf8编码最多3个字节,所以数据插不进去,而utfmb64是支持四个字节的。所以需要将mysql编码从utf8转换成utf8mb4,从【数据库、表、相应字段】都需要修改为utf8mb4,切记!!!
如下:
这时候直接在数据库保存emoji表情包是没有问题的,但是使用nodejs进行操作数据库时还是会报错,就需要在nodejs链接数据库的配置中添加这一句:
charset: 'UTF8MB4_UNICODE_CI', // 用于保存和读取表情包这种4字节的
如下图所示:
这样就成功实现了nodejs在mysql中对emoji的保存和读取。
@emoji.json
{
"emojiList": ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,❤,,,,,,,,,,,,,❣,,,,☝,,,✌,✋,,,,✊,,,,,✍,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,☕,,,,,,,,,,,,,,,,,,,,,,,⚽,⚡,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,☠,,,,"
}
@chart.vue
const {emojiList} = require('./emoji.json')
export default {
name: 'chart',
data () {
return {
mess: '', // 聊天输入的信息
emojiList: emojiList.split(',') // 表情包列表
}
},
methods: {
// 表情包点击事件
emojiDown (index) {
this.mess = this.mess + this.emojiList[index]
}
}
{{item}}