使用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
向控制台显示字符串会正确显示字符串。
我正在玩它一整天,搜索了数十个没有结果的网站。任何帮助都会非常感激。
提前感谢大家。
答案 0 :(得分:1)
PreparedStatement
有一个setCharacterStream()
方法,可以获取Reader
个对象。
现在,您可以使用StringReader
通过setCharacterStream()
将字符串值读入数据库。
希望有所帮助!
答案 1 :(得分:1)
听起来有一个特定列无法接受UTF-8字符。
执行SHOW CREATE TABLE tablename
并确认您要插入字符串的实际列的CHARACTER SET
。如果我在表(和数据库)中将列定义为varchar(255) CHARACTER SET ascii
,那么我可以重新创建您的问题,否则完全是utf8。