[java.sql.SQLException:不正确的字符串值,带JDBC的MySQL

问题描述 投票:0回答:2

我为项目使用MySQL db。我想用jdbc保存数据。但是某些字符有问题。例如ğ,ş。我的连接URL在下面。

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

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

mysql jdbc utf-8
2个回答
1
投票

不正确的字符串值:'\ xC4 \ x9F \ xC4 \ x9F \ xC4 \ x9F'

您正在尝试将UTF-8字符插入不能接受它们的列中。您必须确保column的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

0
投票

MySQL默认支持utf8,其中字符由3个字符表示。对于4字节字符,您需要改用utf8mb4。

© www.soinside.com 2019 - 2024. All rights reserved.