2013-05-02 26 views
1

我有一個PostgreSQL數據庫,它使用字符編碼WIN1252如何在NpgsqlConnection中設置編碼

當查詢數據庫時,有些記錄在嘗試讀取數據時會產生錯誤,因爲它試圖將其轉換爲UTF8。這發生在包含某些非拉丁字符的某些外部名稱上。

的錯誤是:

ERROR: 22P05: character with byte sequence 0x81 in encoding "WIN1252" has no equivalent in encoding "UTF8" 

它當我打電話Read()NpgsqlDataReader發生。

我的連接定義爲:

new NpgsqlConnection("Server=127.0.0.1;Port=5432;Database=xyz;User Id=****;Password=****;"); 

我能做些什麼用C#來讀取這些數據?

回答

5

我設法解決了這個問題。無法在連接字符串或NpgsqlConnectionNpgsqlCommand的任何屬性中設置屬性。

但是,我能夠在查詢中設置值client_encoding。所以直接打開的連接之後我首先執行(非)的查詢:

set client_encoding = 'WIN1252' 

在這之後,在同一連接上的任何後續命令中使用的正確的編碼和無投訴返回的結果。

相關問題