gpt4 book ai didi

windows - Oracle SQL Developer 客户端编码

转载 作者:行者123 更新时间:2023-12-02 06:28:16 24 4
gpt4 key购买 nike

我阅读了许多相关的 Stack Overflow 主题,并花了一整天的时间在 google 上搜索以下问题,但没有找到任何有帮助的内容,但问题似乎并不复杂。

我有一个 Oracle 数据库。让我们看看下面的 PL/SQL 脚本:

    CREATE TABLE Dummy(
id number(19,0),
tclob clob,
tnclob nclob,
PRIMARY KEY (id));

INSERT INTO dummy (id, tclob, tnclob) VALUES (1, 'ñ$ߤ*>;''<’', 'ñ$ߤ*>;''<’');
SELECT tclob, tnclob FROM dummy;

我的问题是“ñ”和“”字符存储为问号。我也尝试通过JAVA加载之前插入的值,但我得到的是问号而不是特殊字符。

我创建了一个小型 Java 方法,它使用 OraclePreparedStatement 保存测试数据,并使用 setNString() 方法将 nclob 数据附加到查询。在这种情况下,所有字符在 Java 和 SqlDeveloper 中都可以正常显示。

所以一个可能的解决方案是使用JAVA将我的数据保存到数据库中。我有数千行插入数据的 SQL 脚本,但我不一定想用 java 再次编写整个脚本。

所以问题是:为什么SqlDeveloper会破坏特殊字符?

我的设置:

    SELECT DECODE(parameter, 'NLS_CHARACTERSET', 'CHARACTER SET',
'NLS_LANGUAGE', 'LANGUAGE',
'NLS_TERRITORY', 'TERRITORY') name,
value from v$nls_parameters
WHERE parameter IN ( 'NLS_CHARACTERSET', 'NLS_LANGUAGE', 'NLS_TERRITORY')

结果:

+---------------+--------------+
| NAME | VALUE |
+---------------+--------------+
| LANGUAGE | HUNGARIAN |
| TERRITORY | HUNGARY |
| CHARACTER SET | EE8ISO8859P2 |
+---------------+--------------+

我将 SqlDeveloper/Preferences/Environment/Encoding 更改为 UTF-8。我还将 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1 值更改为 HUNGARIAN_HUNGARY.UTF8

更新:我尝试使用以下语法插入数据:

    INSERT INTO dummy (id, tclob, tnclob) VALUES (1, N'ñ$ߤ*>;''<’', N'ñ$ߤ*>;''<’');
INSERT INTO dummy (id, tclob, tnclob) VALUES (1, 'ñ$ߤ*>;''<’', to_nclob('ñ$ߤ*>;''<’'));

没有任何帮助。

那我能做什么呢?

最佳答案

在安装了 PLSQL 的 PC 上,将 NLS_LANG 注册表项的值设置为等于 PC 的操作系统区域设置(代码页) 的等效值。

How to detect operating system language locale?
How to map OS locale to NLS_LANG value?

使用 PLSQL 时,创建 Oracle session 所需的客户端语言初始参数是从 NLS_LANG 注册表项中读取的。

Due to Oracle documents数据库中出现无效数据的情况通常是由于客户端NLS_LANG参数设置不正确造成的。NLS_LANG 值应反射(reflect)客户端操作系统代码页
例如,在英文 Windows 环境中,代码页为 WE8MSWIN1252。当 NLS_LANG 参数设置正确时,数据库可以自动转换来自客户端操作系统的传入数据为其编码。

使用 JAVA 方法时,客户端语言参数由控制面板中区域和语言选项下的值设置,因此一切正常。

关于windows - Oracle SQL Developer 客户端编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20422930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com