LC_COLLATE和LC_CTYPE支持postgreSQL中的utf8

时间:2011-07-05 08:10:51

标签: postgresql

通过此链接http://wiki.postgresql.org/wiki/Todo:Collatehttp://www.postgresql.org/docs/9.1/static/collation.html。这让我很困惑。

他们说,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_COLLATE中创建支持LC_CTYPE的数据库时,我必须为utf-8PostgreSQL 9的值选择哪些内容?

1 个答案:

答案 0 :(得分:13)

作为文档,22.2. Character Set Support说:

  

然而,一个重要的限制是   每个数据库的字符集   必须与数据库兼容   LC_CTYPE(字符分类)   和LC_COLLATE(字符串排序顺序)   区域设置。对于C或POSIX   locale,允许任何字符集,   但对于其他语言环境,只有   一个可以工作的字符集   正确。 (但在Windows上,UTF-8   编码可与任何语言环境一起使用。)

我看到你可能在Windows主机(English_United States.1252 locale)下有PostgreSQL,所以你可以使用其中的任何一个(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