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

ali*_*ali 6 java mysql twitter

我尝试将 twitter 提要保存在下表中的 mysql 数据库中

 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;
Run Code Online (Sandbox Code Playgroud)

但出现了以下错误

            java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8F'
                             for column  'tweetcontent' at row 1 
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

pre*_*rem 5

已经在这里回答

MySQLutf8只允许 UTF-8 中可以用 3 个字节表示的 Unicode 字符。这里有一个需要 4 个字节的字符:\xF0\x90\x8D\x83 ( U+10343 GOTHIC LETTER SAUIL )。

如果您有 MySQL 5.5 或更高版本,您可以将列编码从 更改utf8utf8mb4. 这种编码允许以 UTF-8 存储占用 4 个字节的字符。

您可能还需要服务器属性设置character_encoding_serverutf8mb4MySQL的配置文件中 似乎Connector/J 默认为 3 字节 Unicode,否则

例如,要在 Connector/J 中使用 4 字节 UTF-8 字符集,请使用 配置 MySQL 服务器character_set_server=utf8mb4,并characterEncoding省略 Connector/J 连接字符串。Connector/J 然后将自动检测 UTF-8 设置。