java - JDBC MySQL 连接器/J 不正确的字符串值 : '\xC3\xBCvifone...'

标签 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:不正确的字符串值:“\xC3\xBCvifo...”对于列...

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

我玩了一整天,用谷歌搜索了数十个网站,但没有结果。非常感谢任何帮助。

提前谢谢大家。

最佳答案

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

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

关于java - JDBC MySQL 连接器/J 不正确的字符串值 : '\xC3\xBCvifone...' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23833140/

相关文章:

java - 在 Linux (Mageia) 上的 NetBeans 中从 Java 应用程序连接到 MariaDB

mysql - mysql 中的游标错误语法

Spring JdbcTemplate/NamedParameterJdbcTemplate 将空值作为参数值传递

java - 将字符串解析为日期格式

java - 模拟继承的 protected 方法

mysql - 查看和设置 MySQL 运算符

mysql - 有没有办法将 "migrate"与 Wordpress 一起使用的现有 MySQL 数据库迁移到 Azure Blob 存储?

java - ClassNotFoundException 当通过 java 的 Servlets 运行 JDBC 时

java - 如何使按钮不会干扰绘制形状的位置?

java - 过于复杂的目录迭代结构破坏了程序的连续性和可理解性