首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate在Oracle中插入希腊字符

Hibernate在Oracle中插入希腊字符
EN

Stack Overflow用户
提问于 2017-01-13 00:36:15
回答 1查看 869关注 0票数 0

我需要在甲骨文中插入希腊字符,如'ϕ‘。我现有的DB结构不支持它。在调查的基础上,找到了各种解决方案,采用了NCLOB代替CLOB的解决方案。当我使用unicode ( 03A6 )表示“ϕ”,并使用SQL编辑器中的联阿比to函数插入时,它的工作非常好。就像下面的那个。

更新配置集CLOB =(‘\03A6’)

但是,当我使用hibernate尝试通过我的应用程序插入字符时,它就失败了。在调试时,我发现插入前的字符串是'\u03A6‘。在插入后,我认为它是。

有人能帮我解决这个问题吗?如何利用联阿安全部队?

PN:我不使用任何本地sqls或hql。我使用表的实体对象。

编辑:

使用的Hibernate版本为3.5.6。无法更改版本,因为有那么多其他插件依赖于此。因此,不能在Hibernate实体中的我的字段中使用@Nationalized

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-20 05:31:46

在绞尽脑汁研究不同的文章并尝试了这么多选项之后,我终于决定稍微调整一下代码,以便用Java来处理这个问题,而不是通过hibernate或Oracle DB。

在插入DB之前,我将识别字符串中的unicode字符,并将其格式化为在开头添加&#x,在末尾添加;。这个编码的字符串将在符合UTF-8的UI (JSP,HTML)中显示它的实际unicode。下面是密码。

代码语言:javascript
复制
Formatter formatter = new Formatter();
    for (char c : text.toCharArray()) {
        if (CharUtils.isAscii(c)) {
            formatter.format("%c", c);
        } else {
            formatter.format("&#x%04x;", (int) c);
        }
    }

    String result = formatter.toString();

例如:

代码语言:javascript
复制
String test = "ABC \uf06c DEF \uf06cGHI";

将被格式化为

test = "ABC  DEF GHI";

此字符串在UI中呈现时(甚至在word文档中)显示为

ABC  DEF GHI

我用不同的unicode字符试了一下,它运行得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41625586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档