mysql只能插入特定的中文字符,什么原因?

一开始插入中文出现错误,接着google问题的原因,发现是字符编码问题,配置编码后,就出现了下面这种情况。
我用的是wamp server 集成环境,MySQL版本是5.7.14.

在向一个建好的表中插入中文记录时,比如:

 insert into t2 (name) values ("梅生");

出现ERROR 1366 (HY000): Incorrect string value错误。

但是当我这样插入时:

 insert into t2 (name) values ("梅");

又能正常完成。
好像拼音为 mei 的都可以完成,比如:
mysql> insert into t2 (name) values ("没");
mysql> insert into t2 (name) values ("每");

下面是具体的截图和表的信息。

这是数据库的字符配置:
图片描述

小弟PHP菜鸟一枚,这是第一次提问,请问有哪位大神能给些线索吗?

google了一下也没发现这种情况,感觉挺神奇的,求大神解答。

阅读 3.2k
4 个回答

你的数据库的编码是不是 utf8?
把编码换成 utf8mb4 试试看

我猜是你这个shell窗口不支持utf8.

但又把编码设成utf8了.

客户端把gbk给发过去了. 但服务器却当成utf8来理解. 所以就报错了.

传送门
编码:
梅C3B7
生C9FA

然后具体的请看传送门里的讨论。

谢谢大家的回答,问题已经解决。修改字符集后仍然无法插入中文,是因为我的数据库和表都是在字符集修改之前创建的,修改之后重新创建库和表,已经可以正常插入。后来查看数据库和表的编码,果然发现有属性的编码是latin1。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题