0

我有一个旧数据库集,其中 NLS_LANG 设置为 IW8ISO8859P8。这是我无法改变的。

我有另一个应用程序,它不适用于 unicode,它适用于我的应用程序所处理的相同数据。在某些字段中,有时,用户会插入代表 NIS 货币符号的字符 161 作为字符串的一部分。当我尝试使用 oledb 从 .Net 读取这些数据时,一切都很好,但是当我尝试使用 oracle 客户端读取这些数据时,却得到了垃圾数据。当我在 .Net 中插入 NIS simble 时,它​​也会被保存为垃圾。

我知道我可以在获得数据后对其进行操作,但我正在寻找 .Net 中的 oracle 客户端的一些配置以使其正常工作。

我已经为此工作了几个星期,任何帮助都会得到帮助。Tnx诺姆

4

3 回答 3

0

您看过 Oracle 的NLS_LANG 常见问题解答吗?

于 2009-05-19T16:18:41.613 回答
0

您是否检查了客户端上的 nls_lang 设置?对 nls 设置的任何更改都可以被客户端(注册表和环境)上的设置覆盖。也许这是您的问题的原因。验证您在客户端上没有任何其他 nls 设置,并且您的任何功能都没有明确更改它。您可以运行登录后触发器来更改会话格式。这将确保服务器设置将影响所有客户端。此外,请确保已设置 nls_territory。它应该设置为 nls_lang 的一部分,但以防万一您的意思是 nls_language。我相信货币符号会受此影响。

于 2009-05-19T18:58:47.963 回答
0

在一天结束时,我使用辅助 nvarchar 列解决了它。并触发它们之间的转换。

我在 plsql 中编写了函数,使用由许多 if 语句实现的自定义编码来执行与 Unicode 的字节转换。

对于有问题数据的每一列,我添加了带有 nvarchar 存储的第二列,并使用该函数来转换有问题的数据的触发器。

因此,遗留应用程序使用和更新 varchar 列,触发器将其转换为 Unicode 列。.Net 代码使用 Unicode 列,触发器再次将信息转换为遗留应用程序中使用的有问题的编码。

如果您需要更多信息,请随时与我联系以获取更多信息

于 2010-02-23T12:06:56.460 回答