Oracle 6/7/7.1 無中文字符集,許多舊庫用 US7ASCII 或 WE8ISO8859P1 強行存中文。雖然前端顯示正常 (客戶端=資料庫字符集,Oracle 跳過轉換),但實際存儲的二進制與字符集聲明不符,隱患極大:LENGTH、SUBSTR 等函數會產生錯誤結果。
US7ASCII0001 → 0354 (對應 ZHS16GBK)| 特性 | OracleClient (System.Data.OracleClient) | OleDb (System.Data.OleDb) |
|---|---|---|
| 支援版本 | .NET Framework 1.1 專用,後續版本標記棄用 | 全版本支援 |
| 驅動來源 | 微軟官方 | 微軟 MSDAORA / Oracle OraOLEDB.Oracle |
| 連接字符串 | Data Source=oratest;User Id=scott;Password=tiger | 需加 Provider:Provider=MSDAORA.1;... 或 Provider=OraOLEDB.Oracle.1;... |
| 字符集敏感度 | 高:Server 端若為 US7ASCII,無論客戶端如何設置,讀中文必亂碼;Server 為 ZHS16GBK 則正常 | 低:無論 Server 端字符集何種,讀寫中文均無亂碼 |
| 性能傳聞 | 號稱較快,但實測差異微小 | 穩定可靠 |