mysql - java.sql.SQLException : Incorrect string value MySQL with JDBC

标签 mysql jdbc utf-8

我的项目使用MySQL数据库。我想用jdbc保存数据。但是某些字符有问题。例如ğ,ş。我的连接网址如下。

jdbc:mysql://localhost:3306/kutuphane useUnicode=true&characterEncoding=UTF-8

但是我收到 java.sql.SQLException: 错误的字符串值: '\xC4\x9F\xC4\x9F\xC4\x9F' 错误。我已尝试此站点中的所有方法,但它没有解决问题.虽然保存了,但此时记录字符失败。不显示ğ、ş等。是否是mysql的bug?

最佳答案

Incorrect string value: '\xC4\x9F\xC4\x9F\xC4\x9F'

您正尝试将 UTF-8 字符插入到无法接受它们的列中。您必须确保的COLLATION(字符集)与UTF-8兼容。

该列设置可能已被显式设置,或者可能只是使用了表的默认设置(该表可能已或可能未使用数据库的默认值,而数据库又可能已或可能未使用默认值)服务器的值)。

SHOW CREATE TABLE tablename 将告诉您当前的设置是什么。如果您看到类似的内容

CREATE TABLE `utf8test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `textcol` varchar(50) COLLATE latin1_general_cs DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_general_cs

那么你将无法在 textcol 中插入任意 UTF-8 字符,除非你执行类似的操作

ALTER TABLE utf8test 
    CHANGE COLUMN textcol textcol VARCHAR(50) COLLATE utf8_general_ci

关于mysql - java.sql.SQLException : Incorrect string value MySQL with JDBC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29310213/

相关文章:

mysql - 如何重建这个sql查询

mysql - 加入mysql表中的最高值时出现问题

mysql - 在 MySQL 中,是否可以将日期设置为列名

Mysql连接3表查询

php - 从 PHP 以 UTF-8 编码

java - 搜索 JDBC 条目

java - Hibernate 列表与 JDBC 结果集

java - 无法使用JDBC解析文件

java - 如果在命令行编译与在 IntelliJ 中编译,java 程序的 UTF-8 输出会有所不同

c++ - 通过c++在windows和linux上读取UTF8文件