【问题标题】:psql console not accepting localizationpsql 控制台不接受本地化
【发布时间】:2012-03-26 19:12:18
【问题描述】:

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

这是 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 文件来输入本地化字符并将插入内容保留在那里。这不是最有效的方法;-)

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

【问题讨论】:

    标签: linux postgresql console debian psql


    【解决方案1】:

    我相信您遇到了此错误报告中解释的问题: 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
    

    【讨论】:

      【解决方案2】:

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

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

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

      set client_encoding=iso88591;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-30
        • 2019-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多