我试图将阿拉伯字符保留到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我应该在哪里设置/检查编码? –