获取 [SqlExceptionHelper] 不正确的字符串值:'\xF0\x9F\x90\xBE V...' 尽管表是 UTF-8 [重复]

Posted

技术标签:

【中文标题】获取 [SqlExceptionHelper] 不正确的字符串值:\'\\xF0\\x9F\\x90\\xBE V...\' 尽管表是 UTF-8 [重复]【英文标题】:Getting [SqlExceptionHelper] Incorrect string value: '\xF0\x9F\x90\xBE V...' although the table is in UTF-8 [duplicate]获取 [SqlExceptionHelper] 不正确的字符串值:'\xF0\x9F\x90\xBE V...' 尽管表是 UTF-8 [重复] 【发布时间】:2016-11-27 18:18:49 【问题描述】:

在我的 java 项目中,我不断收到[SqlExceptionHelper] Incorrect string value: '\xF0\x9F\x90\xBE V...',尽管 mysql Workbench 显示该表是 UTF-8 格式,并且在工作台中添加值“Brandstätter”有效。

我在工作台中将排序规则从 utf8 更改为 utf8mb4,但这不起作用。此外,在 java 项目中,我的 application.properties 文件中有:jdbc.url = jdbc:mysql://localhost:3306/recommendations?useUnicode=true&characterEncoding=utf8(将utf8 更改为utf8mb4 导致Unsupported character encoding 'utf8mb4')。

另外,这会返回 utf8: SELECT default_character_set_name FROM information_schema.SCHEMATA S WHERE schema_name = "db-name";

我能做什么?

编辑:正在插入的数据:“Loy ¾ Virtual Pet Game”。

Edit2:现在我看得更仔细了,this application's name 解决了这个问题。我该怎么办?忽略奇怪的字符(Character.isISOControl,还是有比 UTF-8 更强大的排序规则?

【问题讨论】:

您可以添加将数据插入数据库的 java 代码吗? monkeyStix - 正如我所说,我试图声明 utf8mb4 但它没有用。我是不是做错了什么? 你用的是什么版本的mysql? @Ran,你使用 Spring JDBC 吗? 是的,我使用 Spring。另外,当我尝试导出数据时,MySQL 说它是 5.7.12 版本。 【参考方案1】:

您的表中需要utf8mb4在您与数据库的连接中。

这是线索:

\xF0\x9F\x90\xBE

注意第一个字节是十六进制F0。那是 4 字节“字符”的 UTF8 导入。 MySQL 的utf8 不能处理超过 3 个字节; utf8mb4 会。

注意:在 MySQL 之外,“UTF-8”表示任意长度的字符。在 MySQL 内部,“utf8”和“utf8mb4”之间存在令人困惑的区别。

【讨论】:

如何设置?我在 jdbc.url 中尝试过但失败了(请参阅我的问题),它并没有帮助我通过工作台在 MySQL 中进行设置。 什么版本的 JDBC? MySQL 的? 不知道 JDBC,MySQL 是 5.7.12/13 这里有更好的吗? ***.com/a/13754976/1766831 可能的连接器/J 问题:***.com/a/18059663/1766831

以上是关于获取 [SqlExceptionHelper] 不正确的字符串值:'\xF0\x9F\x90\xBE V...' 尽管表是 UTF-8 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

SqlExceptionHelper 142: ORA-00909: 参数个数无效

SqlExceptionHelper 142: ORA-00909: 参数个数无效

@Column(unique = true) 产生一个 WARN o.h.engine.jdbc.spi.SqlExceptionHelper:SQL 警告代码:0,SQLState:00000

ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] - Data truncation: Incorrect datetime value

[org.hibernate.engine.jdbc.spi.SqlExceptionHelper]SQL Error: 1064, SQLState: 42000问题的解决办法

关于org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Incorrect string value: 'xE5x91xBCxE5x