2010-05-10 65 views
4

我從CSV文件導入數據。其中一個領域有口音(TelefónicaO2 UK Limited)。將數據插入表時,應用程序會拋出en錯誤。編碼錯誤PostgreSQL 8.4

PGError: ERROR: invalid byte sequence for encoding "UTF8": 0xf36e6963 
HINT: This error can also happen if the byte sequence does not match the 
encoding expected by the server, which is controlled by "client_encoding". 
: INSERT INTO "companies" ("name", "validated") 
    VALUES(E'Telef?nica O2 UK Limited', 't') 

當我輸入帶重音和變音符號的名稱時,通過表格輸入的數據有效。 我該如何解決這個問題?

編輯

我通過轉換文件的編碼處理的問題。我將CSV文件上傳到Google文檔並將文件導出爲CSV。

回答

6

錯誤消息非常明顯:您的client_encoding設置設置爲UTF8,並且您嘗試插入未用UTF8編碼的字符(如果它是來自MS Excel的CSV,則您的文件可能是在Windows-1252中編碼的代替)。

您可以在應用程序中將其轉換,也可以更改PostgreSQL連接以匹配要插入的編碼(從而使PostgreSQL能夠爲您執行轉換)。您可以通過在您的PostgreSQL連接上執行SET CLIENT_ENCODING TO 'WIN1252';來嘗試插入該數據。導入後,應將其重置爲其原始值RESET CLIENT_ENCODING;

HTH!

+0

+1 - 您也可以嘗試手動將文件轉換,例如使用的iconv。但給你一些時間來了解你在做什麼;試驗和錯誤在這裏不起作用。 2010年的程序員必須瞭解Unicode和字符集編碼的基礎知識。 – leonbloy 2010-05-10 20:34:38

+0

這是文件編碼問題。我將CSV文件上傳到Google文檔並再次導出文件。這解決了編碼問題。 – 2010-05-10 21:39:45