【发布时间】:2014-05-23 15:29:28
【问题描述】:
我在使用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 将字符串显示到控制台会正确显示字符串。
我玩了一整天,用谷歌搜索了几十个网站都没有结果。任何帮助将不胜感激。
提前感谢大家。
【问题讨论】:
-
执行
SHOW CREATE TABLE tablename并确认您尝试在其中插入字符串的实际列 的CHARACTER SET。如果我在表(和数据库)中将列定义为varchar(255) CHARACTER SET ascii,否则完全是utf8,我可以重新创建您的问题。如有必要,请编辑您的问题并发布SHOW CREATE TABLE的结果。 -
戈德,你找到了问题所在。出于某种原因,在大约 15 列的表中,只有一列设置了 ascii 字符集,而所有其他列都正确设置为 utf8。由于某种原因,我不得不错过它。非常感谢,您为我节省了很多时间!如何将您的评论标记为答案?
标签: java mysql jdbc unicode utf-8