.net Oracle连接和nls_lang

.net Oracle连接和nls_lang,.net,oracle,oracleclient,.net,Oracle,Oracleclient,我有一个旧数据库集,NLS_LANG设置为IW8ISO8859P8。这一点我无法改变 我有另一个应用程序,它不使用unicode,它处理的数据与我的应用程序处理的数据相同。 在某些字段和某些时间,用户将代表NIS货币simble的字符161作为字符串的一部分插入。 当我尝试使用oledb从.Net读取这些数据时,一切都很好,但当我尝试使用oracle客户端读取这些数据时,我得到的是垃圾数据。另外,当我在.Net中插入NIS simble时,它会保存为垃圾 我知道我可以在获得数据后对其进行操作,但

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

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

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

我已经在这方面工作了几个星期了,如果有任何帮助,我将不胜感激。 Tnx
Noam

您看过Oracle的吗?

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

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

我用plsql编写了一些函数,这些函数使用许多if语句实现的自定义编码在Unicode之间进行字节转换

对于每个有问题数据的列,我添加了第二个有nvarchar存储的列,以及使用该函数转换有问题数据的触发器

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


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

是的,由于在客户端和.Net之间移动数据的问题没有被引用,因此找不到任何帮助。我已检查了客户端的设置,并且设置与此相同。请注意,我在同一台机器上运行了另一个非统一代码应用程序,它工作得很好,我唯一的问题是当我从.Net获取数据时,Oracle客户端将其转换为unicode,添加一些您编写的字节转换代码示例会更好这是一个粗糙的字节到字节转换-没有什么值得骄傲的:)我理解您,但对于那些新接触这门学科的人来说,这将是非常有教育意义的,特别是当涉及编码时,我觉得它永远不会粗糙:)