2014-05-17 161 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