MSQL写入中文报错,Incorrect string value: ‘\xE5\xBC\xA0\xE4\xB8\x89‘ for column ‘name‘ at row 1

初学mysql,在插入中文时报错,经查阅资料发现是编码错误。需要修改数据库编码格式。

问题:

在mysql中插入中文时报错:Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' for column 'name' at row 1

解决方案:修改数据库编码格式

执行命令查看数据库编码:

mysql> show variables like "%char%";

执行结果: 

这几个变量代表的含义是:

character_set_client:

设置客户端使用的字符集。

character_set_connection:

设置连接数据库时的字符集,如果程序中没有指明连接数据库使用的字符集类型则按照这个字符集设置。

character_set_database:

设置默认创建数据库的编码格式,如果在创建数据库时没有设置编码格式,就按照这个格式设置。

这一栏的编码为latin1,此编码不支持中文,需要修改

character_set_filesystem:

文件系统的编码格式,把操作系统上的文件名转化成此字符集,即把 character_set_client转换character_set_filesystem, 默认binary是不做任何转换的。

character_set_result:

数据库给客户端返回时使用的编码格式,如果没有指明,使用服务器默认的编码格式。

character_set_server:

服务器安装时指定的默认编码格式,这个变量建议由系统自己管理,不要人为定义。

character_set_system:

数据库系统使用的编码格式,这个值一直是utf8,不需要设置,它是为存储系统元数据的编码格式。

character_set_dir:

这个变量是字符集安装的目录。

// 引用自关于MySQL中的8个 character_set 变量说明_qq_34352013的博客-CSDN博客_character_set_filesystem

尝试修改character_set_database变量

执行命令修改character_set_database变量:

set character_set_database = utf8;

修改后再次查询编码:

mysql> show variables like "%char%";

 执行结果:

 character_set_database变量已经修改成功,再次尝试插入中文字符

 插入成功!问题解决。