我正在尝试将阿拉伯字符保存到 Oracle 11g 数据库中。当我持久化阿拉伯字符串时,它们会成功持久化,但是在数据库中它们显示为问号???????。
我搜索并发现问题可能与数据库编码有关,但我认为这可能不是真的,因为我能够从 SQLDeveloper 编写阿拉伯语字符串并提交 DB,它在 DB 表中正确显示。此外,当我检索该字段并将其显示在屏幕上时,它会正确显示。
因此,由此我得出结论,DB 可以识别阿拉伯语并且那里没有问题。我尝试设置客户端/服务器区域语言设置仍然没有解决问题。在阅读了这篇文章并尝试了它的建议后,我发现问题可能出在持久层上,它不能正确处理阿拉伯字符。解决方案是什么?
我不确定这是否是一个多余的问题,但我很绝望。任何帮助/建议表示赞赏。
我正在使用的系统:
服务器:Oracle Thin 11g
IDE:带有 JSF 1.2 的 IBM WebSphere Integration Developer
注意:仍然是初学者。
编辑
插入代码:
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 的控制台中打印字符串,但也 ???????。