6

あるマシンで奇妙な問題が発生しました。

これは、Postgres8.4.10を使用したDebianSqueezeの新規インストールです。

私はマシンにいくつかのローカリゼーションをインストールしています、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はlibreadlineではなくlibeditにリンクされるようになりました。残念ながら、アクセント付き文字に関してlibeditは壊れているか不完全です。レポートによると、回避策は次のコマンドでpsqlを起動することです。

LD_PRELOAD=/lib/libreadline.so.5 psql

または、 postgresql-commonパッケージをバージョン114以降にアップグレードします。安定したブランチにはないため、最も簡単な方法はバックポートに切り替えることです。

# 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 に答える