2014-06-19 68 views
2

我需要將英文和阿拉伯文文本插入到PostgreSQL數據庫中。PostgreSQL數據庫中的阿拉伯文和英文文本

我通過一個蝙蝠腳本運行以下命令:

psql.exe --echo-all --username=postgres --dbname=dbname -f populate.sql 

populate.sql有這樣的語句:

insert into table1 (column1, column2) VALUES (2, 'المستخدم '); 

如果我通過pgAdmin的做到這一點,它的工作原理。事情是我需要通過應用程序啓動後運行的一些.sql填充腳本來完成此操作。

在這種情況下,我得到亂碼,這樣的:

العرض

我創建在記事本中的腳本++使用Encode in UTF-8 without BOM的選擇,因爲在UTF-8的正常編碼增加了一個附加的字符開始該文件和一些插入沒有製作。

我假設這是一個編碼問題,但我還沒有弄清楚到底什麼是錯的。 數據庫使用UTF-8格式。

在此先感謝!

回答

7

Windows控制檯在默認情況下不會說任何形式的Unicode,它會說「本地」代碼頁。哪個代碼頁取決於您的Windows安裝的語言設置。

如果你chcp 65001那麼它會切換到UTF-8。

總的來說,批處理/ cmd文件和Windows命令行中的文本編碼處理是非常糟糕的。我通常建議您將任何基本上不是7位ASCII的文件放入單獨的.sql文件中,並通過psql -f和適當的client_encoding來執行;環境變量PGCLIENTENCODING對此很有用。

所以嘗試:

SET PGCLIENTENCODING=utf-8 
psql.exe --username=postgres --dbname=dbname -f populate.sql 
+0

非常感謝你的'PGCLIENTENCODING'解決它! 插件是正確的,沒有更多的胡言亂語! – pteixeira

相關問題