这是我的连接设置方式: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: