`
izuoyan
  • 浏览: 8962954 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

mysql4.1的java中文问题解决

阅读更多

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

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

首先有必要说明的是,你的驱动需要更新到 mysql-connector-java-<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">3.0.16</chsdate>或以上版本,否则不支持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 文档,发现白费了功夫:

UsingtheUTF-8CharacterEncoding-PriortoMySQLserverversion4.1,theUTF-8characterencodingwasnotsupportedbytheserver,howevertheJDBCdrivercoulduseit,allowingstorageofmultiplecharactersetsinlatin1tablesontheserver.

查阅 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的方式是否可行,大家可以测试一下。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics