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.
这几个要改一起改。
特别是 列级的经常忘记修改。
当访问数据的时候 还是会出现这个问题。