您的位置:首页 > 编程语言 > Java开发

Java取建MySQL表语句,乱码!

2013-12-31 14:08 302 查看
本来是件很简单的事情.java通过mysql的driver连接mysql数据库.然后通过show create table取得建表语句.

但实际操作起来就很崩溃,到处都有字符集,操作系统有charset,java有charset,driver有charset,mysql有charset,连接有charset,结果有charset,这么多charset .....

其实本来这些都还算好说,而且根据自己的理解和以往的经验,处理这些其实也没啥难度.自以为信心满满的时候却傻眼了....

取表中的中文数据,很正常,直接就取到了中文.一点弯路都没走,本以为万事大吉,但是执行show create table xxx的时候却发现.当表定义中包含中文字符的时候.竟然是乱码......TNND.

没关系,不就是转码么.... 不怕不怕..

写了一个三层的循环,用遍了各种的字符集,各种连接字符集,latin1,gbk,utf8,各种字符集互相转换iso-8859-1,gbk,utf8,全部都跑了一遍........ MD,竟然还是乱码,一个正常的都没有...

为啥mysql终端,mysql各自工具取到的都是正常的中文呢? 百思不得其解......

最后.... 换了一下API

String sql = "show create table `test`.`z_cn_comment`";

ResultSet rs = con.DBGet(sql);

if(rs.next())

{

String createSQL = rs.getString(2);

}

中的

String createSQL = rs.getString(2);

换成了

String createSQL = null;

BufferedReader br = new BufferedReader(new InputStreamReader(rs.getAsciiStream(2),"GBK"));

while( (createSQL = br.readLine()) != null )

System.out.println(createSQL);

这个世界立刻就和谐了.....

原因待查.估计是Java在数据接收到后做了预处理...

http://techbbs.zol.com.cn/1/8_1335.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: