我正在开发一个rails应用程序,它的内容是土耳其语。我使用Postgresql9.2.2作为我的数据库后端。除了正确的排序外,一切都很好(没有奇怪的字符问题等)。
例如,当我试图列出一些按所在城市订购的商品时,我会期望像"阿达纳、布尔萨、伊斯坦布尔、吉雷松、宗古尔达克……"这样的商品。
相反,我总是在列表的末尾/开头添加特定于土耳其语的字符。(即"阿达纳、布尔萨、吉雷松、宗古尔达克、伊斯坦布尔")
我已经用命令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"
手动创建数据库,但再次没有进展。
关于我的开发环境的一些信息:
Running Mountain Lion 10.8.2与Macbook Pro 7.1
psql --version
:9.2.2rails --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=
如何解决此问题?
OSX上的UTF-8区域设置已损坏。您可以尝试使用非UTF-8语言环境(tr_tr.ISO8859-9),但它在这方面似乎也被破坏了。所以这是行不通的。