对于大家熟知的mysql数据库,是不是中文字符编码的问题一直困绕着你?
本文以mysql5.5举例,安装方法在此虑过,只说一点:为了程序顺利插入数据到数据库而不出现字符问题,一般都设置mysql编码为utf8编码。然而在命令行模式往往会出现字符编码问题:
1)如在命令行模式下,直接插入中文,插入失败(如图一)
图一(不正确的字符串值)
2)用程序(如Java)插入数据成功,使用navicate工具显示是中文,即便是mysql Workbench工具查询依然是中文(如图二),在命令行模式查询的结果却显示是乱码(如图三)
图二(显示中文)
图三(有数据,却显示乱码)
关于解决方法参看以下链接:
“花飞蝴蝶” 博客,http://jinyabo.blog.51cto.com/3411101/1186030
但是有一个问题,如图四
声明:因为已经进入,所以无需再次进行验证
图四(设置失败)
这时候,只好到my.ini文件查看,关键看两处(如图五)
(1)default-character-set=utf8
(默认编码设置,一般应与操作系统编码一致)
(修改成default-character-set=gbk)(gb18030不行)
(2)character-set-server=utf8(服务端编码设置)
(默认不需要改,但如果不是utf8,建议改成utf8)
图五(编码)
然后再次进入命令行模式,执行查询(如图六)
图六(查询成功)
心得:可以把default-character-set理解成客户端,character-set-server理解成服务端。客户端与服务端编码一致当然是最佳拍档!总之要多观察,多研究配置文件。这类问题不一定每次都见到,而一旦出现,便是让人很挠头。比如我之前每次都是utf8安装,用了三年,中文字符插入也没问题,唯独这次,换成64位操作系统后,出现了这个问题。问题出现,可以google,可以百度,然而不一定是你想要的答案,那就自己研究吧,肯定可以解决!
感谢:花飞蝴蝶的《关于MySQL数据库乱码的问题总结》文章