使用 HIbernate 和 MySQL 从 varbinary 列检索字符串时出现问题

发布于 2024-08-27 00:48:48 字数 581 浏览 5 评论 0原文

这是我的场景。我使用 Hibernate 在 MySQL 中保存了一堆包含亚洲字符的字符串。这些字符串写入 varbinary 列中。保存操作期间一切正常。 DB 包含正确的值(字节序列)。如果我查询(再次使用 Hibernate)我保存的字符串,我会得到正确的结果。但是,当 Hibernate 使用数据库中的值填充字符串所属的实体时,我得到的值与我在检索它们的查询中使用的值不同。我没有收到正确的值,而是收到一堆 FFFD 替换字符。

例如:如果我将“하늘”存储在数据库中,然后查询它,则结果字符串将是 \uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD。

  • 数据库连接设置了以下参数 useUnicode=true&characterEncoding=UTF-8,
  • 我已尝试对 Hibernate 使用以下配置,但没有解决问题:
    -connection.useUnicode = true
    - 连接.characterEncoding = UTF-8

    顺便说一句,如果 MySQL 列的类型为 varchar,那么这一切都可以正常工作。 我缺少什么?有什么建议吗? 谢谢

Here's my scenario. I save a bunch of Strings containing asian characters in MySQL using Hibernate. These strings are written in varbinary columns. Everything works fine during the saving operation. The DB contains the correct values (sequence of bytes). If I query (again using Hibernate) for the Strings that I saved I get the correct results. But when Hibernate fills the entity to which the Strings belong with the values from the DB I get different values then the ones I used in the query that retrieved them. Instead of receiving the correct values I receive a bunch of FFFD replacement characters.

For example: if I store "하늘" in the DB and then I query for it, the resulting String will be \uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD.

  • the DB connection has the following parameters set useUnicode=true&characterEncoding=UTF-8,
  • I've tried using the following configurations for Hibernate but that didn't solve the problem:
    - connection.useUnicode = true
    - connection.characterEncoding = UTF-8

    By the way, this all works fine if the MySQL columns are of type varchar.
    What am I missing? Any suggestions?
    Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

隔纱相望 2024-09-03 00:48:48

将连接字符集也设置为二进制:

SET NAMES 'binary';

Set the connection character set to be binary too:

SET NAMES 'binary';
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文