我正在使用delphi和postgres 9.0, 的軟件,原始開發人員選擇數據庫編碼爲「SQL_ASCII」 ...... 所以我們改變了編碼UTF-8爲我們的數據庫.. 我們,我們開始後編碼「UTF-8」的字符0xc286在「WIN1252」中沒有等效...使用iconv進行轉換postgres恢復崩潰
的一個檢查的ONCLICK收到此錯誤框 (表單從數據庫填充) 查詢where錯誤來了
'select * from diary where survey in('2005407')';
,但這個錯誤只來了少數人的複選框,而不是所有
的變化是直線前進,但我們有大量的歷史數據,我們將不得不重新儲存到新創建的UTF-8 database..so我也跟着我在網上和計算器發現的步驟也
- 轉儲數據庫作爲E- UTF-8
SQL_Ascii_backup.backup
使用的iconv轉換SQL_ASCII到UTF-8
"C:\Program Files\GnuWin32\bin\iconv.exe" -f ISO8859-1 -t UTF-8 C:\SQL_Ascii_backup.backup>UTF_Backup.backup
3.創建與編碼一個新的數據庫爲UTF-8並重新存儲的備份
UTF_Backup.backup
但當我嘗試恢復它,我得到他的錯誤
然後我試着傾銷原來SQL_ASCII數據庫爲純SQL_Ascii_.sql
文件 然後再我用的iconv改變encoding..and然後恢復
>"C:\Program Files\PostgreSQL\9.0\bin\psql.exe"-h localhost -p 5434 -d myDB -U myDB_admin -f C:\converted_utf8.sql
,這是正確的,但恢復仍IM歌廳的錯誤。
'編碼爲「UTF-8」的字符0xc286在「WIN1252」中沒有等效;
WIN1252從哪裏來?某處您被Bill叔叔的默認設置中的一個擊中。如何在pgadmin3中設置client_encoding?如何在創建數據庫時在轉儲文件中指定? – wildplasser
重新編譯OP之後:數據已經轉換好了,但「應用程序」對字符編碼有一些奇怪的假設。也許有可能在應用程序中設置client_encoding?否則:核武器。或者:將數據庫表重新編碼到WIN1252。或編輯少數受影響的行。 – wildplasser
@wildplasser ..im不知道應用程序中的client_encoding ..我無法使用WIN1252對數據庫進行重新編碼,因爲客戶端希望數據庫是UTF-8 ....但是,如何編輯受影響的行? – PresleyDias