尽管表格采用UTF-8编码,但出现了[SqlExceptionHelper]错误的字符串值:'\xF0\x9F\x90\xBE V...'。

14 浏览
0 Comments

尽管表格采用UTF-8编码,但出现了[SqlExceptionHelper]错误的字符串值:'\xF0\x9F\x90\xBE V...'。

在我的Java项目中,我一直收到[SqlExceptionHelper] Incorrect string value: '\xF0\x9F\x90\xBE V...'的错误信息,尽管MySQL Workbench显示该表是UTF-8编码,并且在Workbench中添加值"Brandstätter"是可以正常工作的。

我在Workbench中将字符集从utf8更改为utf8mb4,但没有起作用。此外,在我的Java项目中,我的application.properties文件中有以下配置:jdbc.url = jdbc:mysql://localhost:3306/recommendations?useUnicode=true&characterEncoding=utf8(将utf8更改为utf8mb4会导致Unsupported character encoding 'utf8mb4')。

此外,该查询返回的是utf8SELECT default_character_set_name FROM information_schema.SCHEMATA S WHERE schema_name = "db-name"

我该怎么办?

编辑:正在插入的数据是:"Loy ߐ¾ Virtual Pet Game"。

编辑2:现在我仔细看了一下,《这个应用程序的名称》是导致问题的原因。我该怎么办?忽略奇怪的字符(使用Character.isISOControl),还是有比UTF-8更强大的字符集?

0
0 Comments

问题的出现原因是MySQL的utf8字符集不支持超过3个字节长度的字符,而\xF0\x9F\x90\xBE是一个4个字节长度的字符。为了解决这个问题,需要在表和数据库连接中都使用utf8mb4字符集。

解决方法如下:

1. 确保表的字符集设置为utf8mb4。可以使用MySQL的工作台(workbench)将列的字符集设置为utf8mb4。

2. 确保数据库连接使用utf8mb4字符集。可以通过在jdbc.url中设置字符集来实现,例如在连接字符串中添加"characterEncoding=utf8mb4"。

3. 检查JDBC的版本和MySQL的版本是否兼容。在这个问题中,JDBC的版本为未知,而MySQL的版本为5.7.12/13。

4. 参考这个链接这个链接,可能有一些与Connector/J相关的问题需要注意。

5. 如果以上方法都没有解决问题,可以尝试使用SHOW CREATE TABLE命令查看表的创建语句,确认字符集是否正确设置。

要解决MySQL中出现"SqlExceptionHelper: Incorrect string value"的问题,需要将表和数据库连接的字符集都设置为utf8mb4。

0