大多数新手在使用MySQL的时候,都会遇到这种插入中文乱码问题。
在执行 insert 语句插入中文就会报类似的错误:
ERROR 1366 (HY000): Incorrect string value: '\xD8\xD0\xCE\xC4\xD5\xD3' for column。
这是因为MySQL数据库默认配置的编码方式是 latin1,该字符编码是拉丁字符集,并不包括中文字符,所以无法插入中文字符。我们只要修改MySQL的字符集就可以了。对于使用者来说,一般推荐使用 utf8 编码来存储数据。除此之外还有 gbk 编码。但本人不推荐设置 gbk 编码,因为 utf8 是国际通用的字符编码,大多数网页的编码格式都是 utf8。
本人所安装的MySQL是5.6版本,修改的方法有两种:
(1)通过修改MySQL的配置文件 my-default.ini
首先,找到MySQL安装目录下的配置文件,例如:E:\MySQL\MySQL Server 5.6;
然后打开my-default.ini,在 [mysqld] 下面添加 default-character-set=utf8 和 character-set-server=utf8 ;
保存之后,重启MySQL数据库。
重启完之后可以通过 show variables like 'character%'; 进行查看字符集情况。
(2)通过mysql命令修改
mysql>SET character_set_client = utf8;
mysql>SET character_set_connection = utf8;
mysql>SET character_set_database = utf8;
mysql>SET character_set_results = utf8;
mysql>SET character_set_server = utf8;
mysql>SET collation_connection = utf8;
mysql>SET collation_database = utf8;
mysql>SET collaction_server = utf8;
但是,就算设置了表的默认字符集为utf8并且通过utf8编码发送查询,你会发现存入数据库的仍然是乱码。这个问题出现在connection连接层上。解决办法是在发送SQL语句之前执行下面这一条语句:
SET NAMES 'utf8';
它相当于下面三条语句:
SET character_set_client = utf8;
SET character_set_results = utf8;