psql控制台不接受本地化



我在我们的一台机器上遇到了一个奇怪的问题。

这是Debian Squeeze的新安装,Postgres 8.4.10。

我在机器上安装了一些本地化,locale-a给出的是:

C
en_US
en_US.iso88591
en_US.utf8
POSIX
swedish
sv_SE
sv_SE.iso88591
sv_SE.utf8

在常规的linux控制台中,我可以使用瑞典本地化(åäöworks),但当我进入psql控制台时,我不能使用本地化字符。无论我如何配置我的终端(尝试了我能想到的几乎所有编码)。

数据库本身运行良好,我可以通过创建一个SQL文件来输入本地化的字符,并将插入内容保留在那里。这不是最有效的方法;-)

以前从未遇到过这个问题,我已经安装了不少机器。有人知道这可能是什么原因吗?

我相信您遇到了这个错误报告中解释的问题:http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=608442

摘要:由于许可问题,psql现在链接到libedit而不是libreadline,不幸的是,libedit在重音字符方面已损坏/不完整。据报道,一个变通办法是推出psql,带有:

LD_PRELOAD=/lib/libreadline.so.5 psql

或者将postgresql-common包升级到版本114或更高版本。由于它不在稳定的分支中,最简单的方法可能是切换到后台端口:

# aptitude -t squeeze-backports install postgresql-common

使用l检查数据库编码,然后检查客户端编码:

=> show client_encoding;
 client_encoding 
-----------------
 UTF8
(1 row)

如果它们不匹配,则将客户端编码更改为数据库的编码:

set client_encoding=iso88591;

最新更新