我的服务器上安装了两个 PostgreSQL 实例:8.3 和 9.0。postgresql 9.0 客户端 - psql 上的波兰变音字符(如 ółęąśżźć)似乎存在一些问题。
当我使用 psql 8.3 连接到 DB(8.3 或 9.0)时 - 我可以在终端上输入所有变音符号而不会出现任何问题:
www:/tmp# sudo -u postgres /usr/lib/postgresql/8.3/bin/psql -q
postgres=# ółśćń
但是,当我使用 psql 9.0 客户端连接到相同的数据库时 - 我无法再在终端上输入变音符号:
www:/tmp# sudo -u postgres /usr/lib/postgresql/8.3/bin/psql -q
以下是一些编码设置:
www:/tmp# sudo -u postgres /usr/lib/postgresql/9.0/bin/psql -q -c "show client_encoding"
client_encoding
-----------------
UTF8
(1 row)
。
www:/tmp# sudo -u postgres /usr/lib/postgresql/8.3/bin/psql -q -c "show client_encoding"
client_encoding
-----------------
UTF8
(1 row)
。
www:/tmp# sudo -u postgres /usr/lib/postgresql/9.0/bin/psql -q -l
List of databases
Name | Owner | Encoding | Collation | Ctype | Access privileges
---------------------+--------------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | pl_PL.UTF-8 | pl_PL.UTF-8 |
。
www:/tmp# echo $LANG
pl_PL.UTF-8
看起来 DB/集群配置并不重要 - 如果终端上的 psql 8.x 运行正常而 psql 9.x 运行不正常。有什么办法可以解决这个问题吗?
答案1
这可能与 psql 9.0.2 从 readline 切换到 libedit 有关。您可以尝试(对我有用,Ubuntu 10.04):
rlwrap psql -n ...
或者:
LD_PRELOAD='/lib/libreadline.so.5' psql ...
或者,建议安装 termcap,但我还没有尝试过(在 Ubuntu 中没有明显的方法可以做到这一点)。