排序,因此使用postgresql无法正常排序

时间:2013-02-04 15:53:20

标签: ruby-on-rails macos postgresql

我正在开发一个rails应用程序,其内容为土耳其语。我使用Postgresql 9.2.2作为我的数据库后端。除了正确的排序外,一切正常(没有奇怪的角色问题等)。

例如,当我尝试列出他们所在的城市所订购的一些物品时,我希望有类似“Adana,Bursa,İstanbul,Giresun,Zonguldak ......”的东西。

相反,我总是在列表的结尾/开头获得土耳其语特定字符。 (即“Adana,Bursa,Giresun,Zonguldak,İstanbul”)

我使用命令initdb /usr/local/var/postgres -E utf8 --locale=tr_TR

初始化了我的postgres数据库

当我在psql控制台中\l时,我得到了预期的结果。

 Name              Owner         Encoding   Collate   Ctype
 ----------------+-------------+----------+---------+-------+ 
 app_development | app         | UTF8     | tr_TR   | tr_TR |
 app_production  | app         | UTF8     | tr_TR   | tr_TR |
 app_test        | app         | UTF8     | tr_TR   | tr_TR |
 postgres        | monkegjinni | UTF8     | tr_TR   | tr_TR |

我还尝试使用LC_CTYPE="tr_TR.UTF-8"LC_COLLATE="tr_TR.UTF-8"手动创建数据库,但再次没有进展。

有关我的开发环境的一些信息:

  • 使用Macbook Pro 7.1运行Mountain Lion 10.8.2

  • psql --version:9.2.2

  • rails --version:3.2.11

$ locale

  • LANG = “tr_TR.UTF-8”
  • LC_COLLATE = “tr_TR.UTF-8”
  • LC_CTYPE = “tr_TR.UTF-8”
  • LC_MESSAGES = “tr_TR.UTF-8”
  • LC_MONETARY = “tr_TR.UTF-8”
  • LC_NUMERIC = “tr_TR.UTF-8”
  • LC_TIME = “tr_TR.UTF-8”
  • LC_ALL =

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

OS X上的UTF-8语言环境已损坏。您可以尝试使用非UTF-8语言环境(tr_TR.ISO8859-9),但在这方面它似乎也被打破了。所以它不会起作用。