为什么Oracle不能保存一些从休眠中给定的字符,而是将其更改为

j7dteeu8  于 2023-11-17  发布在  Oracle
关注(0)|答案(1)|浏览(124)

我正在尝试将Sping Boot 中的此值保存到Oracle数据库表中的NVARCHAR2字段中:

Lyli’anna

字符串
我希望Oracle保存整个值。然而,无论是使用sqldeveloper选择还是在spring应用程序中获取该值,我都得到了这个值:

Lyli¿anna


有没有办法在不修改要插入到数据库中的数据/值的情况下解决这个问题?介意详细分享吗?
更新:
我已经尝试添加了JVM运行选项与-Duser.encoding=UTF8,添加了这些对-Duser.encoding=UTF8配置:

hibernateProperties.put("hibernate.connection.characterEncoding", "utf8");
        hibernateProperties.put("hibernate.connection.CharSet", "utf8");
        hibernateProperties.put("hibernate.connection.useUnicode", true);
        hibernateProperties.put(OracleConnection.CONNECTION_PROPERTY_DEFAULTNCHAR, "true");
        hibernateProperties.put("hibernate.connection.defaultNChar", true);


但同样的事情还是发生了。

kcwpcxri

kcwpcxri1#

正如你已经发现的,数据实际上是Lyli¿anna。所以,这不是显示的问题,也不是字体的问题。
Sping Boot /hibernate是基于Java/JDBC的,请参阅数据库JDBC开发人员指南-全球化支持。
我不熟悉Java,作为第一次尝试,我建议设置

JAVA_TOOL_OPTIONS=-Duser.encoding=UTF8 (or 'UTF-8'?)

字符串
或应用程序使用的任何字符集。

相关问题