在mysql所建立的表中插入中文数据出现错误,
报错Incorrect string value: '\xE6\x89\x8B\xE6\x9C\xBA' for column 'cname' at row 1;
错误原因是在字段'cname'字段插入中文数据,因为建表时没有注明编码格式,则默认使用mysql默认编码latin1(瑞典)
这时为了在表中出入中文数据,需要更改mysql编码格式。
首先我们在mysql安装目录下找到my_default.ini配置文件,将其复制一份重命名为my.ini,在其中加入以下配置
[client]
default-character-set = utf8
[mysqld]
default-storage-engine = INNODB
character-set-server = utf8
collation-server = utf8_general_ci
client是mysql客户端编码格式设置,这里把所有编码格式变为utf8.
尽管把mysql编码格式改了,以前已经创建的数据库、表以及表中字段使用的编码还是latin1
这里可以使用show create database | table database_name/table_name查看数据库及表格创建时的编码格式
这时我们要修改以前创建数据库表时用的默认编码:
修改数据库的编码格式
alter database buybackshop(数据库名) character set utf8;
修改表的编码格式
alter table category(表名) character set utf8;
修改表字段的编码格式
alter table category(表名) modify cname(表中字段名) varchar(50) character set utf8;
通过这几条命令可以把以前已经创建的数据库、表、字段编码格式更改。
一般避免出现编码问题,创建数据库以及表的时候,写sql语句都会加上编码格式的设置
如: