在往mysql数据库的表中插入中文数据的时候如果提示:
Incorrect string value: '\xE4\xBC\x9A\xE5\x91\x98' for column 'recipient' at row 1
这个问题困扰了我三个多小时才解决,一开始去改mysql的varialbles参数 字符编码,发现根本就没作用,!!!
mysql查询variables参数sql
show varialbles like 'character%';
可以百分百肯定是因为数据库表的编码格式不对造成的,这是因为utf8的编码是由三个字节组成的,但是遇到4个字节长度的中文字就会插入异常了,这是长度不够的原因,那怎么办呢?这时候我们就要用到utf8mb4这个编码了,utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换
解决办法:
一般情况下我都是用sqlyog去连接数据库的,所以我们直接在这软件上将数据库的编码直接改成utf8mb4就可以啦,右击数据库-->选择改变数据库
将字符改为utf8mb4就ok啦,在看看是不是将乱码的问题解决了呢
如果问题依然存在,在mysql的安装目录下找到my.cnf文件,
在[client]节点下添加 default-character-set=utf8mb4
在[mysqld]节点下添加 character-set-server=utf8mb4
如图