【问题标题】:MySql UTF encodingMySql UTF 编码
【发布时间】:2011-02-10 20:15:44
【问题描述】:
 java.sql.SQLException: 不正确的字符串值: '\xAC\xED\x00\x05sr...' 列 'xxxx'

该列是 MYSQL 中的长文本,带有 utf8 字符集和 utf8_general_ci 排序规则。

怎么了?

【问题讨论】:

  • 我正在使用 utf-8(或 ISO8859-1 或其他)从服务器读取字节,然后创建一个 StringBuffer,然后将其传递给休眠,然后保存
  • 你可以在发送到数据库之前添加一些调试来显示 StringBuffer 的内容,然后在这里发布吗?

标签: mysql character-encoding utf


【解决方案1】:
ALTER TABLE your_table CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

你可以试试这个。

【讨论】:

    【解决方案2】:

    这是在 Groovy 中使用 PreparedStatements 时吗?如果是这样,您使用的是 GStrings 而不是普通的 Java 字符串。检查您的对象,确保您的参数符合您的预期。

    【讨论】:

      【解决方案3】:

      有点晚了,但您可能想知道 \xAC\xED\x00\x05sr... 是 Java 序列化的一个神奇数字。显然您的参数正在被序列化,而不是被粘贴为字符串。

      【讨论】:

      • 是的,那是我的问题。我试图将 ArrayList 按原样插入 MySQL VARCHAR。
      【解决方案4】:

      将您的表格更改为 latin1 编码或 utf8mb4

      【讨论】:

        【解决方案5】:

        假设这些是十六进制转义码,则文本 \xAC\xED\x00\x05sr... 不是有效的 UTF-8 字符串。

        【讨论】:

          猜你喜欢
          • 2014-04-09
          • 2019-06-30
          • 2013-09-01
          • 1970-01-01
          • 1970-01-01
          • 2018-02-16
          • 2017-09-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多