即时通讯:用户注册保存自定义昵称带表情后台SQL异常

来源:互联网 发布:算法导论第二版答案 编辑:程序博客网 时间:2024/05/16 13:03

【问题描述】

在用户注册功能注册账户时,昵称输入框输入系统自带的emoji表情,调用api提交数据时,后台报错sql异常,描述如下:
这里写图片描述

【问题分析】

emoji表情并非是一个图片,而是以码的形式显示的,因此, 在向后台数据库进行存储的时候,表情的信息将会以类似:“\xF0\x9F…”的形式进行保存,而此类码串在sql语句中拼接将会出现歧义,因此会报告sql异常。


问题环境:
数据库:Mysql
数据库字符集:基字符集:utf8 数据库排序规则:utf8_general_ci

【解决办法】

(1)修改数据库字符集:

基字符集:utf8mb4    数据库排序规则:utf8mb4_general_ci

(2)修改业务字段字符集:[同上]
(3)删除jdbc连接字符串后的部分配置:

原配置:jdbc.url=jdbc:mysql://rm-uf6z2lmnthr70u36oo.mysql.rds.aliyuncs.com/xiaoquan?useUnicode=true&characterEncoding=utf8删掉   ?useUnicode=true&characterEncoding=utf8