JDBC MySQL Connector / J字符串值不正确:'\ xC3 \ xBCvifone ...'

时间:2014-05-23 15:29:29

标签: java mysql jdbc unicode utf-8

使用mysql-connector-java-5.0.8将有效的UTF8字符串插入Percona MySQL数据库时遇到问题。我使用jdk1.8.0_05。此应用程序是一个控制台应用程序。

我有以下字符串:Nüvifone G60

我正在尝试使用PreparedStatement方法使用setString方法将其插入数据库。

我的连接字符串如下:jdbc:mysql://host:post/schema?useUnicode=true&characterEncoding=UTF-8

我的my.cnf包含以下代码:

[client]
default-character-set = utf8

[mysql]
default-character-set = utf8

[mysqld]
init-connect='SET NAMES utf8'
collation_server=utf8_unicode_ci
character_set_server=utf8

我尝试插入数据的表编码设置为utf8_general_ci

我得到的错误信息是: java.sql.SQLException: Incorrect string value: '\xC3\xBCvifo...' for column...

使用System.out.println向控制台显示字符串会正确显示字符串。

我正在玩它一整天,搜索了数十个没有结果的网站。任何帮助都会非常感激。

提前感谢大家。

2 个答案:

答案 0 :(得分:1)

PreparedStatement有一个setCharacterStream()方法,可以获取Reader个对象。

现在,您可以使用StringReader通过setCharacterStream()将字符串值读入数据库。

希望有所帮助!

答案 1 :(得分:1)

听起来有一个特定列无法接受UTF-8字符。

执行SHOW CREATE TABLE tablename并确认您要插入字符串的实际列CHARACTER SET。如果我在表(和数据库)中将列定义为varchar(255) CHARACTER SET ascii,那么我可以重新创建您的问题,否则完全是utf8。