Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Database/JDBC/SQL/JDO/Hibernate » MySQL  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 Mysql的中文问题解决办法,client+jdbc
devil4heaven





发贴: 11
积分: 0
于 2004-04-03 11:21 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
最近准备更换一个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




话题树型展开
人气 标题 作者 字数 发贴时间
10630 Mysql的中文问题解决办法,client+jdbc devil4heaven 1323 2004-04-03 11:21
8295 Re:Mysql的中文问题解决办法,client+jdbc alin_ass 10 2004-04-13 12:58
8261 Re:Mysql的中文问题解决办法,client+jdbc alin_ass 46 2004-04-13 13:04
8309 Re:Mysql的中文问题解决办法,client+jdbc jorrey 116 2004-04-13 14:43
8039 Re:Mysql的中文问题解决办法,client+jdbc panjiandong 25 2004-05-15 23:20
8191 Re:Mysql的中文问题解决办法,client+jdbc 空心菜 72 2004-05-18 18:06
8168 Re:Mysql的中文问题解决办法,client+jdbc coolnight 8 2004-06-22 18:48
8345 Re:Mysql的中文问题解决办法,client+jdbc helloworld 35 2004-06-22 20:10

flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   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