这是我的连接设置: Connection conn = DriverManager。getConnection(url + dbName + "?useUnicode=true&characterEncoding=utf-8",用户名,密码);

我得到以下错误时轮胎添加一行到一个表: 错误的字符串值:'\xF0\x90\x8D\x83\xF0\x90…在第1行为“content”列

我插入数千条记录,当文本包含\xF0时,我总是得到这个错误(即不正确的字符串值总是以\xF0开始)。

列的排序规则是utf8_general_ci。

有什么问题吗?


当前回答

我的解决方案是将列类型从varchar(255)更改为blob

其他回答

这主要是由一些unicode字符引起的。对我来说,它是卢比的货币符号。

为了快速修复这个问题,我必须找出导致这个错误的字符。我把整个文本复制粘贴到一个文本编辑器中,比如vi,然后用一个文本替换掉麻烦的字符。

我在我的rails项目中遇到了同样的问题:

Incorrect string value: '\xF0\xA9\xB8\xBDs ...' for column 'subject' at row1

解决方案1:在保存到db之前将字符串转换为base64通过base64 .encode64(subject) 然后使用Base64.decode64(subject)

解决方案2:

步骤1: 更改主题列的字符集(和排序规则)

ALTER TABLE t1 MODIFY
subject VARCHAR(255)
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

步骤2:在数据库中。yml使用

encoding :utf8mb4

删除模式并使用utf8mb4字符集重新创建它解决了我的问题。

只做

ALTER TABLE `some_table` 
CHARACTER SET = utf8 , COLLATE = utf8_general_ci ;

ALTER TABLE `some_table` 
CHANGE COLUMN `description_with_latin_or_something` `description` TEXT CHARACTER SET 'utf8' NOT NULL ;

在尝试了许多查询之后,终于成功了

ALTER TABLE
table_name
CHANGE column_name column_name 
varchar(256)
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;