windows mysql 中文乱码和中文录入提示太大错误的解决方法

今天操作mysql的时候很郁闷,因为修改默认字符集搞了半天,终于弄成了(关于如何把windows的默认字符集设置成功,可以参看另一篇博文,最终在mysql中输入show variables like 'character%'显示的值都是utf8),而后面又出现了录入中文错误,错误信息如下:

1.  Data truncation: Data too long for column 'name' at row 1

网上搜了半天,参照http://blog.csdn.net/zoucui/article/details/6126404中的第一个方法解决的,操作方法如下:

修改my.ini文件,我电脑上的路径是:C:\Program Files (x86)\MySQL\MySQL Server 5.0\my.ini,找到如下一行:

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

去掉STRICT_TRANS_TABLES,项,保存,重启mysql服务器即可。

2.中文乱码问题的解决方法

上面能够把中文录入进数据库的表了,但是又出现了录入之后使用selcet查询的时候乱码问题,怎么解决都不行,最终参照如下链接

http://blog.csdn.net/xiangsuixinsheng/article/details/6235254http://hi.baidu.com/lwbqqyumidi/item/2fd36a4b3a08ff02c0161354

 的介绍的方法,进行操作,对应的乱码问题就解决了。

 下面把第二个链接对应的文章内容粘贴如下:

mysql中经常会遇到中文乱码问题,对于一般的中文乱码问题解决办法:使数据库编码,页面显示编码和程序与数据库交互数据保持一致即可。现在一般用的较多的是utf-8(数据中是utf8,注意写法上区别)。

但是,当编码都同时设置为utf-8(数据库中式utf8)后,在用命令创建数据表内容时,如果其中有字段是中文,则还是会出现中文乱码问题,并且是插入进表中的相应中文字段乱码。解决办法如下:

对于mysql自带的命令行客户端,首先在命令行 mysql>后输入set names gbk; ,回车,然后再输入mysql创建数据库、表及字段内容命令即可。此时,相应中文字段中中文显示正常:

原因:因为在,mysql中设置为utf8编码后,mysql默认为你所键入的命令中也为utf8编码。从而导致中文乱码。首先在命令行 mysql>后输入 set names gbk; ,相当于告诉mysql后台客户端键入命令以gbk编码输入,mysql客户端端会自动将其正确录入转换为utf8存储。当然,如果本来编码就皆为gbk则不存在此问题。

改过之后要重启服务。

对于Navicat 图形化造作界面中命令列介面,我们会发现如果直接输入mysql创建数据库、表及字段内容命令SQL语句时,其中的中文仍然会出现乱码,并且即使在命令行最初mysql>后输入 set names gbk; ,回车,然后再输入SQL语句,中文乱码问题依然无法解决。现给出解决办法如下:

在Navicat新建连接时,点击高级,将其中使用mysql字符集前面的勾去掉,同时在上面的编码处选择gbk,点击确定后,在其命令列介面再次直接输入mysql创建数据库、表及字段内容命令SQL语句时,其中的中文部分显示正常。

至此,MySQL中文乱码问题很好解决。

但是,如果页面设置的是utf-8编码,在mysql后台已经设置编码为utf8的情况下,从页面录入的中文存储在mysql数据库中依然出现乱码,则问题是因为mysql前台【client】编码问题,将其编码也设置为utf8,然后重启服务即可。即此种情况下,使各处字符编码均为utf8,保持一致即可。

针对上面的说法,我的做法就是进入mysql的时候就首先敲入如下设置:set names gbk;后面的操作就是通用的操作,该录入中文就录入中文,显示也就没有问题了,没有乱码了,感觉还是挺简单的。

上一篇:MySQL及navicat for mysql中文乱码


下一篇:php mysql 中文乱码解决方法