我試圖將阿拉伯字符保留到Oracle 11g數據庫中。當我堅持使用阿拉伯字符串時,他們成功地堅持了下來,但是,在數據庫中他們顯示爲問號???????。
我搜索了一下,發現問題可能與數據庫編碼有關,但我認爲這可能不正確,因爲我可以從SQLDeveloper編寫阿拉伯字符串並提交數據庫,它在數據庫表中正確顯示。此外,當我檢索該字段並將其顯示在屏幕上時,它會正確顯示。
因此,從這個我得出結論,DB認識到阿拉伯語,那裏沒有問題。我嘗試設置客戶端/服務器區域語言設置仍然沒有解決問題。 在閱讀this後,並嘗試其建議,我發現這個問題可能與持久層有關,它不能正確處理阿拉伯字符。這有什麼解決辦法?
我不確定這是多餘的問題,但我絕望。任何幫助/建議表示讚賞。
系統我使用:
服務器:Oracle瘦11克
IDE:IBM WebSphere Integration Developer中使用JSF 1.2
注:還是一個初學者。
EDIT
插入的代碼:
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是一個實體的一個實例。目前我正在將字符串硬編碼。 System out在IDE的控制檯中打印字符串,但也是???????。
迪您設置編碼支持阿拉伯語你的代碼中的任何地方在你的java字符串之前要堅持的例子? –
@resus不知道如何在java中設置字符串的編碼。在DB NLS_Character集合是WE8MSWIN1252和NLS_NCharacter集合是AL16UTF16 –
@ resus我應該在哪裏設置/檢查編碼? –