这是我的连接设置方式:Connection conn = DriverManager.getConnection(url + dbName + "?useUnicode=true&characterEncoding=utf-8", userName, password);
尝试在表中添加行时出现以下错误:Incorrect string value: '\xF0\x90\x8D\x83\xF0\x90...' for column 'content' at row 1
我正在插入数千条记录,并且当文本包含\xF0时总是会出现此错误(即,不正确的字符串值始终以\xF0开头)。

该列的排序规则是utf8_general_ci。

可能是什么问题呢?

最佳答案

MySQL的utf8仅允许使用UTF-8中的3个字节表示的Unicode字符。在这里,您有一个需要4个字节的字符:\xF0\x90\x8D\x83(U+10343 GOTHIC LETTER SAUIL)。

如果您具有MySQL 5.5或更高版本,则可以将列编码从utf8更改为 utf8mb4 。此编码允许存储在UTF-8中占用4个字节的字符。

您可能还必须在MySQL配置文件中将服务器属性character_set_server设置为utf8mb4。看来Connector/J defaults to 3-byte Unicode otherwise:

07-25 22:12