最近做数据库导入数据的时候遇到了一个问题,写入中文数据时,中文显示出来为问号,并且通过sql语句插入中文时会有如下报错:Incorrect string value: ‘\xE5\x92\x8C\xE7\x94\xB0’ for column ‘name’ at row 1
这是因为数据表的编码方式不正确,默认的编码方式是latin1,而utf8的编码方式才能正确显示中文,因此需要修改数据表的编码。执行如下sql语句即可修改数据表编码方式为utf8,修改完成后即可通过sql语句正常插入中文数据。
ALTER TABLE XXX CONVERT TO CHARACTER SET utf8;
大多数情况下都是通过项目程序批量插入数据,因此仅仅修改表的编码格式还不够,需要设置sql连接的字符集和编码方式,修改为如下连接代码即可。
jdbc:mysql://127.0.0.1:3306/database_name?useSSL=false&useunicode=true&characterEncoding=utf8
这样就修改成功,可以正常地通过程序插入中文数据了。但是值得注意的是,之前已经写入数据表的乱码数据是无法修复的,只能删除之前的数据重新写入。