2011-07-05 29 views
20

來自此鏈接http://wiki.postgresql.org/wiki/Todo:Collatehttp://www.postgresql.org/docs/9.1/static/collation.html。這讓我感到困惑。LC_COLLATE和LC_CTYPE在postgreSQL中支持utf-8

他們說,utf-8支持取決於操作系統的能力,它的傳送在每個LC_COLLATELC_CTYPE選項之間。

當我使用pdAdmin III創建數據庫時,有3個選項,C, Posix and English_United States.1252C, Posix and English_United States.1252有什麼不同?

我想使用所有支持的語言,即unicode utf-8,這似乎不是一個選項。

我必須選擇爲LC_COLLATELC_CTYPE用於創建支持PostgreSQL 9utf-8數據庫中的值是什麼?

回答

12

至於文檔,22.2. Character Set Support說:

一個重要的限制,但是,是 每個數據庫的字符集 必須與數據庫的 LC_CTYPE(字符分類)兼容 和LC_COLLATE(串排序) 區域設置。對於C或POSIX 語言環境,允許任何字符集, ,但對於其他語言環境,僅有 一個字符集可正確工作 。 (在Windows上,然而,UTF-8 編碼可以用任何區域使用。)

我看,可能你有PostgreSQL的Windows主機(English_United States.1252 locale)下,所以你可以使用任何的這些(PosixC爲相同,意思是「沒有區域」),讀22.1. Locale Support

區域支持指 應用尊重文化 喜好關於字母, 排序,數字格式等等

如果您希望系統的行爲如同 那樣它沒有語言環境支持,請使用 特殊語言環境C或POSIX。

編輯:

Windows平臺的POSIX不兼容,所以你應該使用C區域爲平臺。我不知道爲什麼安裝有POSIX選項(我想這是相當錯誤):

enter image description here

要創建一個沒有語言環境,你可以簡單地使用--no-locale開關如新的羣集:

initdb --no-locale -E UTF-8 C:\pgdata
+0

OWH感謝非常。現在我明白了。 – Ahmad

+0

但我有問題。 我嘗試重新安裝postgresql,然後在開始安裝時,我選擇了POSIX。完成後,我嘗試創建新的數據庫,但我得到錯誤「無效區域名稱POSIX」 – Ahmad

+0

@Ahmad:嘗試使用'C'來代替。 –