用C#解決Oracle9i和Oracle10g字符集不兼容的問題

應公司派遣去雲南給南方電網開發一個電力分析系統。因爲我們的系統主要作用是統計計算和數據分析,所以 本身並不採集基礎數據,基礎數據都是從別的第三方系統採集而來。還好的是大部分系統的數據採集都是通過WEB服務的方式,當時只有一家系統要求我們直接從他們的數據庫裏去讀取(呵呵,這在電力部門一般是不被允許的,畢竟數據需要安全嘛),大概是人家不願意寫接口吧。本來對於我們來說直接去數據庫讀取數據是最好不過了。但在這裏問題出現了,採集的數據全部成了亂碼,原因是字符集不相同。對方用的是Oracle9i數據庫,字符集編碼是 WE8ISO8859P1。而我們用的是Oracle10g數據庫,字符集編碼是ZHS16GBK。由於權限的原因,我無法更改對方數據庫字符集編碼。我曾經嘗試把我們的數據庫修改成WE8ISO8859P1格式,但最後我們的數據庫全部成了亂碼。
呵呵,看來修改字符集編碼是不行的。我便給Oracle公司打電話諮詢,漫長的等了一天,Oracle公司的回答是“很抱歉,只有一種方法可以解決,就是把對方的數據轉換成txt”。暈!這是什麼解決方案嗎,我根本就沒法用……
最好經過一半天的考慮,我決定使用程序來解決,既先把對方的數據轉換成GB2312格式,然後再進行採集。函數如下:
 
public static string ConverWE8ISO8859P1ToGB2312(string data)
  {
   return System.Text.Encoding.Default.GetString
   (System.Text.Encoding.GetEncoding("iso-88591").GetBytes(data));
  }

哈哈!經過一測試,問題解決了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章