对于大家熟知的mysql数据库,是不是中文字符编码的问题一直困绕着你?

本文以mysql5.5举例,安装方法在此虑过,只说一点:为了程序顺利插入数据到数据库而不出现字符问题,一般都设置mysql编码为utf8编码。然而在命令行模式往往会出现字符编码问题:

1)如在命令行模式下,直接插入中文,插入失败(如图一)

解决Mysql字符编码问题_中文字符

图一(不正确的字符串值)

 

2)用程序(如Java)插入数据成功,使用navicate工具显示是中文,即便是mysql Workbench工具查询依然是中文(如图二),在命令行模式查询的结果却显示是乱码(如图三)

 

解决Mysql字符编码问题_utf8_02

图二(显示中文)

 

解决Mysql字符编码问题_utf8_03

图三(有数据,却显示乱码)

 

关于解决方法参看以下链接:

 花飞蝴蝶 博客,http://jinyabo.blog.51cto.com/3411101/1186030

 

但是有一个问题,如图四

声明:因为已经进入,所以无需再次进行验证

解决Mysql字符编码问题_mysql数据库_04

图四(设置失败)

 

这时候,只好到my.ini文件查看,关键看两处(如图五)

(1)default-character-set=utf8

(默认编码设置,一般应与操作系统编码一致)

(修改成default-character-set=gbkgb18030不行)

(2)character-set-server=utf8(服务端编码设置)

(默认不需要改,但如果不是utf8,建议改成utf8

解决Mysql字符编码问题_utf8_05

图五(编码)

 

然后再次进入命令行模式,执行查询(如图六)

解决Mysql字符编码问题_中文字符_06

图六(查询成功)

 

心得:可以把default-character-set理解成客户端,character-set-server理解成服务端。客户端与服务端编码一致当然是最佳拍档!总之要多观察,多研究配置文件。这类问题不一定每次都见到,而一旦出现,便是让人很挠头。比如我之前每次都是utf8安装,用了三年,中文字符插入也没问题,唯独这次,换成64位操作系统后,出现了这个问题。问题出现,可以google,可以百度,然而不一定是你想要的答案,那就自己研究吧,肯定可以解决!

 

感谢:花飞蝴蝶的《关于MySQL数据库乱码的问题总结》文章