PSQL консоль не принимает локализацию - PullRequest
6 голосов
/ 09 марта 2012

Я столкнулся со странной проблемой на одной из наших машин.

Это новая установка Debian Squeeze с Postgres 8.4.10.

У меня на машине установлено несколько локализаций, локаль -a дает:

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

В обычной консоли Linux я могу использовать шведскую локализацию (работает), но когда я вхожу в консоль psql, я не могу использовать локализованные символы. Не имеет значения, как я настраиваю свой терминал (пробовал практически каждую кодировку, которую я могу придумать).

Сама база данных работает нормально, я могу вводить локализованные символы, создавая файл SQL и сохраняя там вставки. Это просто не самый эффективный способ сделать это; -)

Никогда раньше не сталкивался с этой проблемой, и я установил довольно много машин. Кто-нибудь знает, что может быть причиной этого?

Ответы [ 2 ]

7 голосов
/ 15 марта 2012

Я полагаю, что вы столкнулись с проблемой, описанной в этом сообщении об ошибке: 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 или выше. Так как он не находится в стабильной ветке, самый простой способ - переключиться на backports:

# aptitude -t squeeze-backports install postgresql-common
0 голосов
/ 09 марта 2012

Проверьте кодировку базы данных с помощью \l, затем проверьте кодировку клиента:

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

Если они не совпадают, измените кодировку клиента на код базы данных:

set client_encoding=iso88591;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...