Windows

如何強制 Windows 支持 PostgreSQL 中不支持的 LC_COLLATE 和 LC_TYPE?

  • August 30, 2012

我全新安裝了 PostgreSQL 9.1.x。不幸的是,我發現作業系統不支持LC_COLLATE = 'pl_PL.utf8'LC_CTYPE = 'pl_PL.utf8'. 我在 PostgreSQL 文件中讀到:

在所有平台上,名為 default、C 和 POSIX 的排序規則都可用。根據作業系統支持,可能會提供其他排序規則。

但是,有一種方法可以強制 Windows 支持該語言環境嗎?我的意思是更新檔,外掛或其他東西。

在 Windows 上,可能已經安裝了所需的語言環境,只是名稱與Unix 上不同。

例如,以下數據庫創建似乎對我在我的 Windows XP 上使用 PG9.1 工作正常,它的預設語言環境French_France.1252和沒有安裝我記得的其他語言包。

CREATE DATABASE pldb
      ENCODING = 'UTF8'
      LC_COLLATE = 'Polish'
      LC_CTYPE = 'Polish'
      TEMPLATE=template0;

此外,通過在這個新創建的數據庫中以 UTF8 格式送出此查詢來快速測試排序順序:

select * from (values ('z'), ('ź'), ('ż'), ('s'), ('ś'), ('x'), ('y')) as letters order by 1;

似乎輸出正確的結果:

s

ś

x

y

z

ź

ż

據我所知,您不能強制 Windows 版本的 PostgreSQL 支持 Windows 不提供的語言環境和排序規則。PostgreSQL 使用系統語言環境和排序規則支持。如果系統不支持,則無法使用。有時這是一個令人沮喪的限制,但它是如何發生的。您需要選擇 Windows 安裝支持的合適編碼和排序規則。

如果您想為作業系統排序規則命名並呼叫它,pl_PL.utf8您可以使用CREATE COLLATION.

請參閱字元集支持排序規則支持pg_collat​​ion目錄表。

你想用這個解決什麼問題?

引用自:https://dba.stackexchange.com/questions/23435