【问题标题】:java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8F' for column 'tweetcontent' at row 1java.sql.SQLException:不正确的字符串值:第 1 行的列 'tweetcontent' 的 '\xF0\x9F\x98\x8F'
【发布时间】:2015-01-24 16:30:00
【问题描述】:

我尝试将 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;

但是出现了如下错误

            java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x8F'
                             for column  'tweetcontent' at row 1 

谁能帮帮我?

【问题讨论】:

标签: java mysql twitter


【解决方案1】:

已经回复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 字符集,请将 MySQL 服务器配置为 character_set_server=utf8mb4,并将 characterEncoding 保留在 Connector/J 连接字符串之外。然后,Connector/J 将自动检测 UTF-8 设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 2016-03-13
    • 2014-07-03
    • 2018-05-05
    • 2013-12-23
    • 2019-07-27
    相关资源
    最近更新 更多