通过此链接http://wiki.postgresql.org/wiki/Todo:Collate和http://www.postgresql.org/docs/9.1/static/collation.html。这让我很困惑。
他们说,utf-8
支持取决于操作系统功能,以及它在每个LC_COLLATE
和LC_CTYPE
选项之间的不同。
当我使用pdAdmin III
创建数据库时,有3个选项C, Posix and English_United States.1252
。 C, Posix and English_United States.1252
之间有什么不同?
我希望使用支持的所有语言,即unicode utf-8
,这似乎不是一种选择。
在LC_COLLATE
中创建支持LC_CTYPE
的数据库时,我必须为utf-8
和PostgreSQL 9
的值选择哪些内容?
答案 0 :(得分:13)
作为文档,22.2. Character Set Support说:
然而,一个重要的限制是 每个数据库的字符集 必须与数据库兼容 LC_CTYPE(字符分类) 和LC_COLLATE(字符串排序顺序) 区域设置。对于C或POSIX locale,允许任何字符集, 但对于其他语言环境,只有 一个可以工作的字符集 正确。 (但在Windows上,UTF-8 编码可与任何语言环境一起使用。)
我看到你可能在Windows主机(English_United States.1252 locale
)下有PostgreSQL,所以你可以使用其中的任何一个(Posix
与C
相同,意思是“没有语言环境”) ,阅读22.1. Locale Support:
区域设置支持是指 尊重文化的应用 关于字母的偏好, 排序,数字格式等
如果您希望系统表现得像 它没有语言环境支持,请使用 特殊区域设置C或POSIX。
修改强>
Windows平台不符合POSIX,因此您应该为该平台使用C
区域设置。我不知道为什么安装程序有POSIX选项(我想这是一个错误):
要创建没有区域设置的新群集,您只需使用--no-locale
开关,例如:
initdb --no-locale -E UTF-8 C:\pgdata