项目突然出现说用户提交评论失败了,查看日志,发现
Incorrect string value: 'xF0x9Fx98xAD",...' for column 'source' at row 1
原来是评论内容中有emoji表情,需要4字节 UTF-8 Unicode 编码,而我们通常数据库使用的是utf-8编码,默认是按照三个字节一个单位编码的。
修改以下几点:
- 数据库连接字符串删除characterEncoding=utf8
如"jdbc:mysql://localhost:3306/dbname?useunicode=true&characterEncoding=utf8";
修改为"jdbc:mysql://localhost:3306/dbname?useunicode=true";
- 修改数据表的字符集
table table_name convert to character set utf8mb4;
- 修改数据库配置,在配置文件中加入
[mysqld]
- 修改数据库配置,在配置文件中加入
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[mysql]
default-character-set=utf8mb4
该文件通常位于 C:/Program Files (x86)/MySql/my.ini(windows) 或my.cnf(linux)
改完保存并重启mysql。