【问题标题】:Incorrect string value: '\xF0\x9F\xA4\x96<b…' for column 'body' at row 1不正确的字符串值:第 1 行的列 'body' 的 '\xF0\x9F\xA4\x96<b...'
【发布时间】:2019-07-27 05:17:37
【问题描述】:

我已将列类型设置为 utf8mb4,将排序规则设置为 utf8mb4_bin。表默认也是 utf8mb4 和 utf8mb4_bin。

当我使用 SequelPro 添加表情符号“????”时手动到数据库,它工作得很好。

但是,当我使用 JDBC 执行 INSERT 时,它给了我错误的字符串值错误。

这是我的连接字符串:jdbc:mysql://localhost:3306/myschema
我正在使用mysql-connector-java-5.1.32-bin.jar

我做错了什么?

这是我正在使用的一些代码:

String sql = "INSERT INTO table VALUES (?)"
String body = ...;
statement = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
statement.setString(1, body)
statement.execute();

【问题讨论】:

  • 如果您不显示代码,我们怎么知道您做错了什么?例如。您是使用Statement 还是PreparedStatement 进行插入? 编辑问题并显示相关代码。
  • 准备好的声明。我编辑了问题并添加了一些代码。
  • 你的连接也是utf8mb4吗?
  • 我尝试了不同的连接字符串,但无法正常工作。 jdbc:mysql://localhost:3306/mySchema?useUnicode=true&character_set_server=utf8mb4 连接到服务器但是还是一样的bug
  • 当我尝试“characterEncoding=utf8mb4”时,它会抛出不支持的编码异常

标签: java mysql jdbc unicode utf8mb4


【解决方案1】:

我想通了。我需要将characterEncoding=UTF-8 放入 JDBC 连接 URL。

在此处阅读更多信息:https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-charsets.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-23
    • 2012-11-19
    • 2015-01-24
    • 1970-01-01
    • 2020-02-20
    • 2014-07-03
    • 2016-03-13
    相关资源
    最近更新 更多