报错:
- 首次创建好table后,向表中插入汉字内容时会提示:ERROR 1366 (HY000): Incorrect string value: ‘\xE6\x8C\x82\xE6\x9C\xBA’ for column ‘name’ at row 1,表示’name’这列插入的汉字无法被编码。
原因:
mysql数据库的默认编码是latin1,首次创建表单后,可以使用下面代码查看数据库编码:
variables like "%character%";
其中默认的Latin1格式就是导致无法正确插入汉字的原因,需要将其修改为utf8,只需要在配置文件中修改对应的字段即可。
解决方案:
- 修改配置文件:打开linux中 etc目录下的my.cnf文件,本人使用操作系统位centos,windows用户可以自行百度修改方式。
vim /etc/my.cnf
在[client]下加
default-character-set = utf8
在[mysqld]下加
character-set-server = utf8
- 添加完成后,保存退出,重启mysql服务:systemctl restart mysqld.service
- 然后进入mysql再次查看编码格式:show variables like “%character%”
- 此时已经完成编码修改,新创建的表,默认位utf-8格式了,可以实现中文的插入。但是针对已经创建的表单,直接填入中文,仍然会报错,如果不想删表,重新创建,可以采用下列语句更换当前表的编码格式:
alter table `tablename` convert to character set utf8;
本文致谢:’程序员小黑‘提供解决方案,本人予以记录并添加报错内容,以作记录。
原文链接:程序员小黑