6

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

它是 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 控制台中,我可以使用瑞典语本地化(åäö 有效),但是当我进入 psql 控制台时,我不能使用本地化字符。不管我如何配置我的终端(尝试了我能想到的几乎所有编码)。

数据库本身工作正常,我可以通过制作 SQL 文件输入本地化字符并将插入内容保留在那里。这不是最有效的方法;-)

以前没遇到过这个问题,安装了好几台机器。有谁知道这可能是什么原因?

4

2 回答 2

7

我相信您遇到了此错误报告中解释的问题: 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 或更高版本。由于它不在 stable 分支中,最简单的方法可能是切换到 backports:

# aptitude -t squeeze-backports install postgresql-common
于 2012-03-14T20:13:17.127 回答
0

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

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

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

set client_encoding=iso88591;
于 2012-03-09T11:09:48.080 回答