mysql4.1的java中文问题解决

装了一个mysql4.1以后,竟然发现中文问题了。哎,已经好久没有被中文问题困扰了,没想到今天却被这个问题折腾了一个多小时。

 

       首先有必要说明的是,你的驱动需要更新到 mysql-connector-java- 3.0.16 或以上版本,否则不支持mysql4.1

       JDBC URL:"jdbc:mysql://jf:3306/learning?useUnicode=true&characterEncoding=GBK" 4.0版本解释中文没有任何问题,但是在4.1中就不起任何作用,中文依旧乱码。

 

       刚开始以为gbk不支持,那么就更换成utf-8测试一下,结果还是不行。查阅参阅了http://dev.mysql.com/doc/connector/j/en/index.html 文档,发现白费了功夫:

Using the UTF-8 Character Encoding - Prior to MySQL server version 4.1, the UTF-8 character encoding was not supported by the server, however the JDBC driver could use it, allowing storage of multiple character sets in latin1 tables on the server.

查阅 http://dev.mysql.com/doc/connector/j/en/cj-character-sets.html 文档,发现latin1默认是 iso8859_1的字符编码。

但是从数据库检索出来后用转码,从iso8859_1转为GBK也是无效。

 

后来搜索了在网上搜索了一下,发现有介绍修改 mysql my.ini文件,将my.ini 中的 [mysqld] 里添加一行:default-character-set=gbk,然后重起mysql。这个方法因为设计到需要重新启动mysql,没有测试。不知道是否可行。

 

但是发现用ems mysql创建表的sql中多了default charset属性。默认为latin1

CREATE TABLE `tmp_4` (

  `id` tinyint(4) NOT NULL auto_increment,

  `a` char(1) default NULL,

  PRIMARY KEY  (`id`),

  UNIQUE KEY `id` (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1

 

于是将sql更改为 DEFAULT CHARSET=gbk ,重新创建了表。中文问题就这么解决了。不过唯一不好的就是,在mysql中存储的是???之类的字符,无法通过控制台进行查看修改。这个问题目前我还没有找到好的方式,不知道以上修改my.ini的方式是否可行,大家可以测试一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值