MySQL UTF编码

4
java.sql.SQLException: 对于列 'xxxx',字符串值不正确:'\xAC\xED\x00\x05sr...'。

该列是MYSQL中的longtext类型,采用utf8字符集和utf8_general_ci排序规则。

问题出在哪里?


我正在使用utf-8(或ISO8859-1,或其他)从服务器读取字节,然后创建一个StringBuffer,然后将其传递给Hibernate,它会保存它。 - user121196
你能添加一些调试代码来显示 StringBuffer 在发送到数据库之前的内容吗?然后把结果发布在这里吗? - Mark Byers
5个回答

7

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


是的,那就是我的问题。我试图将一个ArrayList直接插入到MySQL的VARCHAR中。 - ben3000

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

1

这是否与在Groovy中使用PreparedStatements有关?如果是,您正在使用GStrings而不是普通的Java字符串。检查您的对象以确保参数符合您的预期。


0
ALTER TABLE your_table CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

你可以试试这个。

0

将您的表更改为Latin1编码或utf8mb4


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接