我們的系統連的是oracle10g的庫,現在做第三方介面,要連oracle 9i,但那邊的庫跟我們的庫不是同一種字符集,就造成了亂碼問題,據說裝9i客戶端,通過9i的客戶端連9i資料庫就可以顯示中文,在dephi裡面是這樣做的,用的provider=oraoledb.oracle.1,顯示中文沒問題,但在c#裡面這種方式卻還是亂碼,估計是跟程式語言有關,c#是託管的,執行在.net framework上。
為了這問題頭都大了,在網上找遍了方法,有改環境變數的,有改登錄檔的,結果還是不行,今天打聽到乙個可行的辦法,如果不考慮效能問題的話,即在oracle裡面用select rawtohex(utl_raw.cast_to_raw(trim(欄位名))) from 表 把中文轉換成16進製制,再在c#裡面把16進製制轉換成中文就搞定了。c#的轉換函式如下:
1posted @///2
///從漢字轉換到16進製制
3///
4///
5///
6public
static
string gethexfromchs(strings)7
1314 system.text.encoding chs = system.text.encoding.getencoding("
gb2312");
1516
byte bytes =chs.getbytes(s);
1718
string str = "";19
20for (int i = 0; i < bytes.length; i++)21"
, bytes[i]);23}
2425
return
str;26}
27///
28///
從16進製制轉換成漢字
29///
30///
31///
32public
static
string getchsfromhex(string
hex)
3341
//需要將 hex 轉換成 byte 陣列。
42byte bytes = new
byte[hex.length / 2
];43
44for (int i = 0; i < bytes.length; i++)
4552
catch
5357}58
59//
獲得 gb2312,chinese simplified。
60 system.text.encoding chs = system.text.encoding.getencoding("
gb2312");
6162
63return
chs.getstring(bytes);
64 }
2012-10-31 10:51
xtjatswc 閱讀(
...)
編輯收藏
Oracle 9i資料庫字符集全攻略
一 簡介 oracle 的字符集存在於伺服器端和客戶端,同時字元 包括中英文本元 儲存於資料庫中也是以一定的字符集編碼存放 正常情況下,當伺服器端與客戶端字符集一致,且載入到oracle資料庫的資料字符集與伺服器字符集也一致時,資料方能正常在客戶端進行顯示 1.伺服器字符集可用下面的語句查詢 sel...
Pro C連線中斷測試 Oracle 9i
為了測試應用程式的健壯性,故意對正常連線的pro c應該程式進行了中斷,從而觀察它們的表現。測試的方法為 1 在編譯pro c應用的時候加上cpool no或cpool yes,測試有連線池和沒連線池的不同表現 2 啟動應用程式後等待輸入,將流程掛起 3 在資料庫中查詢此測試程式的session s...
Pro C連線中斷測試 Oracle 9i
為了測試應用程式的健壯性,故意對正常連線的pro c應該程式進行了中斷,從而觀察它們的表現。測試的方法為 1 在編譯pro c應用的時候加上cpool no或cpool yes,測試有連線池和沒連線池的不同表現 2 啟動應用程式後等待輸入,將流程掛起 3 在資料庫中查詢此測試程式的session s...