Topic: Mysql的中文问题解决办法,client+jdbc

  Print this page

1.Mysql的中文问题解决办法,client+jdbc Copy to clipboard
Posted by: devil4heaven
Posted on: 2004-04-03 11:21

最近准备更换一个Oracle部分表格到Mysql,正在进行相关测试工作,一个明显问题就是字符转换问题,一个下午的时间搞定之,解决方式如下:

Server:
RHAS3 updte1+Mysql 4.0.18(bin方式安装,默认字符为latin1,同时支持其它字符集GBK等等),RHAS3 安装语言为US_EN
Client测试:
创建用户后,远程(win2k3 CN)mysql -h 192.168.10.x -u test -p连接后,show status,显示server端字符集为latin1,create table test(chinese varchar(100)),插入中文数据insert into test values('中文'),select查看中文正常,通过mysql客户端连接使用中文正常
jdbc测试:
RHAS3+Tomcat4.1.30+Sun JDK1.4.2_04,系统默认语言US_EN,使用mysql Connector/J,版本为3.0.11-stable,注意这是mysql官方网站提供的最新jdbc驱动,利用Tomcat自带的DHCP1.1,建立JDBC DataSource,连接url为
jdbc:mysql://localhost:3306/test?autoReconnect=true,然后简单的jsp post提交简单中文,中文转换(jsp打印正常),连接数据库,写入mysql,成功,用mysql client连接后再查看,已经是乱码了!
以为是mysql字符的问题,然后更改/etc/my.cnf,添加
default-character-set = gbk,重新启动mysql,此时数据库默认字符为GBK字符集,重复上面的jdbc测试,这次简单中文正常了
但出来个新问题,对于稍微长一点的中文字符post提交后,居然出exception,java.lang.StringIndexOutOfBoundsException错误,而且只要中文字符超过2个,就出现以上错误,检查编译后java源码,开始怀疑是jdbc drive的错误,上http://bugs.mysql.com,最终得到的结果如下http://bugs.mysql.com/bug.php?id=3288,的确是Connector/J 3.0.11stable的bug,到http://downloads.mysql.com/snapshots.php下载最新的jdbc Driver驱动,安装再次测试,中文正常,测试text字段,大长度中文插入显示均已经正常。

总结:mysql bin package安装后,默认字符集为latin1,此时最好更改其为GBK,JDBC连接时,还是建议使用最新的Mysql官方驱动(别用3.0.11stable),毕竟旧的MM Mysql驱动已经不被支持了,这样JDBC只要写入mysql时转码一下即可,以后从数据库里用JDBC、Mysql Client等读取中文数据都不用再次转码。用惯了Oracle,习惯在sqlplus里直接看到中文数据Big Smile

2.Re:Mysql的中文问题解决办法,client+jdbc [Re: devil4heaven] Copy to clipboard
Posted by: alin_ass
Posted on: 2004-04-13 12:58

难得见到好文章,顶顶

3.Re:Mysql的中文问题解决办法,client+jdbc [Re: devil4heaven] Copy to clipboard
Posted by: alin_ass
Posted on: 2004-04-13 13:04

请问我用win32的4.0.18的zip mysql,没安装,怎么知道它默认字符和如何修改?

4.Re:Mysql的中文问题解决办法,client+jdbc [Re: devil4heaven] Copy to clipboard
Posted by: jorrey
Posted on: 2004-04-13 14:43

连接MySQL数据库使用如下URL:
jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=gb2312
就没有中文问题了,无需修改数据库参数。

5.Re:Mysql的中文问题解决办法,client+jdbc [Re: devil4heaven] Copy to clipboard
Posted by: panjiandong
Posted on: 2004-05-15 23:20

我怎么不行的咧
楼上的
我晕了
还是乱码的咧

6.Re:Mysql的中文问题解决办法,client+jdbc [Re: devil4heaven] Copy to clipboard
Posted by: 空心菜
Posted on: 2004-05-18 18:06

jdbc:mysql://192.168.0.111/student?useUnicode=true&characterEncoding=GBK

7.Re:Mysql的中文问题解决办法,client+jdbc [Re: devil4heaven] Copy to clipboard
Posted by: coolnight
Posted on: 2004-06-22 18:48

楼上的才是正解!

8.Re:Mysql的中文问题解决办法,client+jdbc [Re: coolnight] Copy to clipboard
Posted by: helloworld
Posted on: 2004-06-22 20:10

原来 Connector/J 3.0.11stable 有这种BUG.


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923