我尝试在下表中的mysql数据库中保存twitter feed
CREATE TABLE `tweets` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`tweetcontent` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
但是出现了以下错误
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8F'
for column 'tweetcontent' at row 1
有人可以帮我吗?
答案 0 :(得分:0)
已经回答here
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_encoding_server
设置为utf8mb4
。看来Connector/J defaults to 3-byte Unicode otherwise:
例如,要使用带有Connector / J的4字节UTF-8字符集,请使用
character_set_server=utf8mb4
配置MySQL服务器,并将characterEncoding
保留在Connector / J连接字符串之外。然后,Connector / J将自动检测UTF-8设置。