2014-05-17 164 views
0

我们有带有EE8ISO8859P2字符集的Oracle 11g数据库。这个字符集不能改变,即它必须保持原样。Oracle 11g和.NET ODP字符集转换

但是,将从数据库中插入和读取的数据将来自另一个字符集:CL8MSWIN1251。

我们使用.NET和ODP。一种可能的方法是在.NET应用程序本身中进行手动音译。

Oracle 11g,.NET和ODP的下列情况是否可行?

  1. 使用EE8ISO8859P2字符集编码将数据存储在服务器中的数据库中。
  2. ADO.NET ODP驱动程序连接到数据库并将字符数据检索为不透明字节,这些字节在.NET客户端中通过映射进一步解码:CL8MSWIN1251 => CLR Unicode。

我们尝试过使用NLS_LANG环境变量,但没有解决问题。

有什么建议吗?

回答

0

我假设你的意思是ODP而不是ODC

我不认为你的建议是一个好主意。当然,在你的.NET应用程序中总是可以“欺骗”数据库字符。但想象一下,DBA必须分析数据库上的问题。通常他会使用像SQL * Plus,SQL Developer或类似的工具。或者当另一个工具访问数据库时会发生什么,例如用于报告目的。所有这些主题都不起作用。

Oracle数据库实际上有两个字符集,“正常”的一个是“国家”的。也许你可以使用通过使用NVARCHARNCHAR数据类型设置的第二个字符。

+0

感谢您的评论。是的ODC是一个错字。数据库字符集,正常的和国家的,不能被改变,即它不是一个选项。 你有一些建议如何欺骗.NET应用程序内的数据库字符集(不是手动转写,而是驱动程序和环境配置) – user416472