主页 > 运维运营 > Mysql >
发布时间:2015-01-20 作者:网络 阅读:479次

问题症状:

1,用mysql-front等客户端编写的sql语句向mysql插入中文字符没有任何问题。

2,用 注明了连接方式(包括host,user,passward,database,charset)的python向mysql插入中文字符没有问题。

3,检查了eclipse和系统的默认字符集,都是utf-8,没有问题。

可是,用java向mysql插入中文字符就是有乱码。倒腾了快一天。。。

 

问题排查:

检查mysql端的用show variables like '%char%' 得到如下结果:

"character_set_client","utf8"
"character_set_connection","utf8"
"character_set_database","utf8"
"character_set_filesystem","binary"
"character_set_results","utf8"
"character_set_server","latin1"
"character_set_system","utf8"

这说明服务器上mysql默认的server端的编码方式为latin1,尽管我需要操作的数据库实例的大多数表的大多数字段都已经写成了utf-8,但使用jdbc的默认连接方式仍然会出现乱码问题。

 

解决方案:

在java的连接字符串中写明需要的编码方式,

例如,连接字符串写成:

jdbc:mysql://192.9.200.41:3306/mydbinstance?characterEncoding=utf-8

 

总结:

如果遇到乱码问题可以从三个方面检查

a, eclipse和java的默认编码格式,可以通过System.out.println(Charset.defaultCharset());判断。

b,检查mysql表中字段使用的编码方式。

c,连接字符串中的编码方式。

原文地址:http://blog.csdn.net/waleking/article/details/7827198

关键字词: