Mysql插入中文出现错误

插入中文会报错,但是插入英文不会报错。
错误分析:可能是编码格式不是utf8造成的。

mysql insert into插入中文为乱码 mysql添加中文报错_mysql

解决办法:修改编码格式

mysql insert into插入中文为乱码 mysql添加中文报错_mysql_02

修改字符集的编码格式和排列顺序的编码格式:如下图所示

mysql insert into插入中文为乱码 mysql添加中文报错_mysql_03

修改好以后测试插入中文。如果不行就去修改数据库编码格式

mysql insert into插入中文为乱码 mysql添加中文报错_数据库_04

修改为以下:

mysql insert into插入中文为乱码 mysql添加中文报错_编码格式_05

修改完,测试发现还不行的话 打开命令列界面 :输入show create table user;

mysql insert into插入中文为乱码 mysql添加中文报错_mysql_06

发现 name 和email的编码格式还是latin1 不是utf8,但是默认的编码格式已经变成utf8了

所以要修改所对应列的编码格式

使用下面的命令修改user表里面的编码格式

mysql insert into插入中文为乱码 mysql添加中文报错_编码格式_07

修改以后查看user表编码格式。发现已经不是干你刚才的latin1了。再去测试

mysql insert into插入中文为乱码 mysql添加中文报错_字段名_08

测试结果:

mysql insert into插入中文为乱码 mysql添加中文报错_编码格式_09

成功插入中文。

备注

修改完编码格式后需要重启一下mysql数据库
重启命令:MySQL

net stop mysql的服务名称

net start mysql的服务名称

附录:

mysql修改数据库表和表中的字段的编码格式的修改

修改一张表的所有字段的编码格式

alter table tablename convert to character set utf8;

修改表的编码格式

ALTER TABLE tablename DEFAULT CHARACTER SET utf8;

修改字段的编码格式

ALTER TABLE tablename CHANGE 字段名1 字段名2 VARCHAR(36) CHARACTER SET utf8 NOT NULL;

CHANGE 字段名1 字段名2 VARCHAR(36) CHARACTER SET utf8 NOT NULL;