mysql4.1的java中文问题解决

博主安装 MySQL 4.1 后遇到中文问题,尝试多种方法解决。如更新驱动到 mysql - connector - java - 3.0.16 或以上版本,修改 JDBC URL 字符编码,从数据库检索后转码等均无效。最终通过将创建表的 SQL 中字符集改为 gbk 解决中文乱码,但存储字符在控制台查看修改有问题。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值