0

これが私のシナリオです。Hibernate を使用して、MySQL にアジア文字を含む一連の文字列を保存します。これらの文字列は、varbinary 列に書き込まれます。保存操作中はすべて正常に動作します。DB には正しい値 (バイトのシーケンス) が含まれています。保存した文字列を (再び Hibernate を使用して) クエリすると、正しい結果が得られます。しかし、Hibernate が文字列が属するエンティティに DB の値を入力すると、それらを取得したクエリで使用した値とは異なる値が得られます。正しい値を受け取る代わりに、一連の FFFD 置換文字を受け取ります。

例: DB に「하늘」を保存してクエリを実行すると、結果の文字列は \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 に答える