0

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

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

  • DB连接有以下参数设置useUnicode=true&characterEncoding=UTF-8,
  • 我尝试过为 Hibernate 使用以下配置,但这并没有解决问题:
    - connection.useUnicode = true
    - connection.characterEncoding = UTF-8

    顺便说一句,如果 MySQL 列是 varchar 类型,这一切都可以正常工作。我错过了什么?有什么建议么?谢谢

4

1 回答 1

0

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

SET NAMES 'binary';
于 2012-05-07T23:43:49.700 回答