【发布时间】:2020-05-13 12:36:27
【问题描述】:
当我最后执行代码时,字符会正确保存。但是,当在客户端执行具有相同数据的相同代码时,字符在写入数据库时会发生变化,并且当它们显示在屏幕上时会导致问题。该列的数据类型为 varchar2。
最初,我认为他们最后的数据库字符集与我的不同,所以我向客户端询问了 NLS 参数。事实证明,字符集相同,但语言和领土不同。我认为这可能会导致这个问题,但我不确定。如果是,我该如何要求他们更改?
Paramter Client Me
NLS_CHARACTERSET AL32UTF8 AL32UTF8
NLS_LANGUAGE GERMAN AMERICAN
NLS_TERRITORY AUSTRIA AMERICA
如果我需要提供更多信息,请告诉我。
编辑:问题不在于数据库字符集,而在于应用程序。在 jvm 参数中添加 -Dfile.encoding=UTF-8 后修复了此问题。
【问题讨论】:
-
尝试使用
NVARCHAR -
立即发送另一个数据库版本是不可行的。
-
在许多情况下,Oracle 不是问题,而是访问 Oracle 的软件。即使您从 shell 运行 SQLplus,shell 也很可能是问题所在。您能否提供更多信息,涉及哪些其他软件和操作系统?
-
@Codo,我的 java 应用程序正在 Linux 服务器上运行。
-
问题可能出在 Java 应用程序中,而不是在 Oracle 中。您能否提供有关 Java 应用程序以及它如何处理数据、如何输入数据等的更多信息?
标签: oracle character-encoding varchar2 nls-lang