0

我已经用 AL32UTF8 建立了一个 Oracle 数据库。使用 SQLPlus 和 SQLDeveloper 等工具时,我可以将 DBCS 字符(中文、高 ascii 等)放入数据库中。

但是,当我使用 Oracle Instant Client 的应用程序尝试将数据放入数据库时​​,DBCS 字符会变成 ? 分数。我能够解决这个问题,并通过这样做:在运行我的应用程序的机器(CentOS)上导出 NLS_LANG='.AL32UTF8'。数据库位于单独的机器上。通过上述修复,我需要在所有客户端上设置 NLS_LANG。

我想要做的(如果可能的话)是配置数据库,使其假定客户端默认使用 NLS_LANG = '.AL32UTF8' ,因此不必在所有客户端上设置 NLS_LANG。这可能吗?如果是这样,怎么做?

4

2 回答 2

1

设置AFTER LOGON触发器是数据库层积极控制 NLS 参数的唯一方法。通过客户端环境继承的设置将覆盖服务器环境中的设置。

于 2013-11-11T19:12:12.583 回答
1

这个设置只属于客户端,如果客户端假设默认是一些拉丁语,你不能在其他地方覆盖它。另一方面,您始终可以在应用程序ALTER SESSION中设置所需的选项。NLS_LANG

于 2013-11-11T16:25:04.543 回答