mysql to single byte_com.mysql.jdbc.SingleByteCharsetConverter错误解决办法 | 学步园

java.io.CharConversionException

at gnu.gcj.convert.Input_iconv.read(libgcj.so.81)

at java.lang.String.init(libgcj.so.81)

at java.lang.String.(libgcj.so.81)

at com.mysql.jdbc.SingleByteCharsetConverter.(SingleByteCharsetConverter.java:153)

at com.mysql.jdbc.SingleByteCharsetConverter.initCharset(SingleByteCharsetConverter.java:108)

at com.mysql.jdbc.SingleByteCharsetConverter.getInstance(SingleByteCharsetConverter.java:86)

at com.mysql.jdbc.Connection.getCharsetConverter(Connection.java:3471)

at com.mysql.jdbc.ResultSet.getStringInternal(ResultSet.java:5702)

at com.mysql.jdbc.ResultSet.getString(ResultSet.java:5597)

at com.XXX.se.clustering.db.Dao.refillVector(Dao.java:128)

at com.XXX.se.clustering.db.Dao.getResult(Dao.java:110)

at com.XXX.se.clustering.deriver.Test.main(Test.java:41)

这种问题是因为 java访问的字符集和mysql字符集不一致的原因。

一般mysql缺省字符集是latin1。 但是 eclipse中java缺省的是utf8所以访问时会有问题出现这个错误。

1.修改服务器级

a. 临时更改:

mysql>SET GLOBAL character_set_server=utf8;

b. 永久更改:

shell>vi /etc/my.cnf

[mysqld]

default-character-set=utf8

2.修改数据库级

a. 临时更改:

mysql>SET GLOBAL character_set_database=utf8;

b. 永久更改:

改了服务器级就可以了

3.修改表级

mysql>ALTER TABLE table_name DEFAULT CHARSET utf8;

更改了后永久生效

4.修改列级

修改示例:

mysql>ALTER

TABLE `products` CHANGE `products_model` `products_model` VARCHAR( 20 )

CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;

更改了后永久生效

5.更改连接字符集

a. 临时更改:

mysql> SET NAMES utf8;

b. 永久更改:

shell>vi /etc/my.cnf

在[client]中增加:

default-character-set=utf8

注意:

mysql字符集

有 database,table,column,connection,client.

这几个要改一起改。

特别是 列级的经常忘记修改。

当访问数据的时候 还是会出现这个问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值