Oracle 11g データベースにアラビア文字を保持しようとしています。アラビア語の文字列を永続化すると、それらは正常に永続化されますが、データベースでは疑問符 ??????? として表示されます。
検索したところ、データベースのエンコーディングに問題がある可能性があることがわかりましたが、SQLDeveloper からアラビア語の文字列を書き込んで DB をコミットできるので、そうではないかもしれません。DB テーブル内に正しく表示されます。また、そのフィールドを取得して画面に表示すると、正しく表示されます。
このことから、DB はアラビア語を認識し、問題はないと結論付けました。クライアント/サーバー地域の言語設定を試してみましたが、それでも問題は解決しませんでした。この投稿を読んでその提案を試してみたところ、永続化レイヤーに問題がある可能性があり、アラビア文字が適切に処理されないことがわかりました。これに対する解決策は何ですか?
これが冗長な質問かどうかはわかりませんが、必死です。ヘルプ/アドバイスをいただければ幸いです。
私が使用しているシステム:
サーバー: Oracle Thin 11g
IDE: IBM WebSphere Integration Developer with JSF 1.2
注: まだ初心者です。
編集
コードを挿入:
String a = "اشتغل";
byte[] b = a.getBytes("UTF-8");
String c = new String(b,"UTF-8");
localLgInst.setBdStatus(c);
System.out.println("status " + localLgInst.getBdStatus());
entityManager.persist(localLgInst);
entityManager.flush();
localLgInst はエンティティのインスタンスです。現在、文字列をハードコーディングしています。システム出力は、文字列を IDE のコンソールだけでなく ??????? にも出力します。