psql 9.0 (PostgreSQL) 上的变音符号问题

psql 9.0 (PostgreSQL) 上的变音符号问题

我的服务器上安装了两个 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 中没有明显的方法可以做到这一点)。

相关内容