java.sql.SQLException:字符串值不正确:' \ xF0 \ x9F \ x98 \ x8F'专栏' tweetcontent'在第1行

时间:2014-11-26 11:08:24

标签: java mysql twitter

我尝试在下表中的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 

有人可以帮我吗?

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设置。