mysql4.1的java中文问题解决

来源:互联网 发布:js h5 实现超级玛丽 编辑:程序博客网 时间:2024/05/17 23:21

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

原创粉丝点击