这是我的情景。我使用Hibernate在MySQL中保存了一堆包含亚洲字符的字符串。这些字符串是用varbinary列编写的。保存操作期间一切正常。 DB包含正确的值(字节序列)。如果我查询(再次使用Hibernate)我保存的字符串,我得到正确的结果。但是当Hibernate用数据库中的值填充字符串所属的实体时,我得到的值与我在查询中使用的值不同。我没有收到正确的值,而是收到了一堆FFFD替换字符。
例如:如果我在数据库中存储“하늘”然后我查询它,结果字符串将是\ uFFFD \ uFFFD \ uFFFD \ uFFFD \ uFFFD \ uFFFD。
我尝试过使用Hibernate的以下配置,但这并没有解决问题:
- connection.useUnicode = true
- connection.characterEncoding = UTF-8
顺便说一句,如果MySQL列的类型是varchar,这一切都可以正常工作。 我错过了什么?有什么建议? 感谢
答案 0 :(得分:0)
将连接字符集也设置为二进制:
SET NAMES 'binary';