2010-03-28 44 views
0

這是我的場景。我使用Hibernate在MySQL中保存了一堆包含亞洲字符的字符串。這些字符串被寫入varbinary列。在保存操作過程中一切正常。 DB包含正確的值(字節序列)。如果我查詢(再次使用Hibernate)我保存的字符串,我會得到正確的結果。但是,當Hibernate使用來自數據庫的值填充字符串所屬的實體時,我會得到不同的值,然後是在檢索它們的查詢中使用的值。我接收到一堆FFFD替換字符,而不是接收正確的值。使用HIbernate和MySQL從varbinary列檢索字符串的問題

例如:如果我將「하늘」存儲在數據庫中,然後查詢它,則生成的字符串將是\ uFFFD \ uFFFD \ uFFFD \ uFFFD \ uFFFD \ uFFFD。

  • 數據庫連接具有以下參數設置了useUnicode =真&的characterEncoding = UTF-8,
  • 我使用Hibernate的下列配置嘗試,但沒有解決的問題:
    - connection.useUnicode = true
    - connection.characterEncoding = UTF-8

    順便說一下,如果MySQL列的類型爲varchar,這一切都可以正常工作。 我錯過了什麼?有什麼建議麼? 感謝

+0

爲什麼你需要VARBINARY? – 2010-03-28 13:38:29

+0

我需要varbinary,因爲我必須存儲MySQL目前不支持的一些4字節的UTF-8字符串。在使用varchar之前,我試圖存儲這些4字節的UTF-8字符串時出現異常。 – Florin 2010-03-29 20:50:35

回答

0

設置連接字符集是二進制太:

SET NAMES 'binary';