Кодировка консоли (psql 9.0.3)

Может нелепый вопрос, но ни в документации ни в FAQ ничего похожего не нашел.
Есть проблемы с отображением русскоязычного текста в консоли (кодировка БД - WIN1251)
При запуске консоль выдает варнинг: Console code page differs from Windows code page, 8-bit craracters might not work correctly. See psql reference page "Notes for Windows users" for delails. (страничку это не смог найти как ни искал), полагаю что проблема в различии кодировки консоли и БД.

Можно-ли как-нибудь поменять кодировку консоли ну или как-то это исправить, если причина в другом?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Можно: SET CLIENT_ENCODING TO

Можно:

SET CLIENT_ENCODING TO 'кодировка'

кодировка может быть, например WIN1251, и т.д. см. список поддерживаемых кодировок:
http://postgresql.ru.net/manual/multibyte.html#MULTIBYTE-CHARSET-SUPPORTED

Спасибо, но не помогло, это

Спасибо, но не помогло, это уже пробовал) Все равно иероглифы вместо русских букв.

Не ту кодировку выбрали вот и

Не ту кодировку выбрали вот и всё. Всем помогает, вам нет? ;)

Дело в том, что она не

Дело в том, что она не меняется, как была 866, так и остается, может я куда-то не туда ввожу команду? (пробовал в саму консоль и в граф. интерфейсе, команда выполняется (за ~15мс), но увы.

Так в psql надо команду

Так в psql надо команду вводить, при чём здесь консоль?
Команда переключает вывод символов PostgreSQL в ту кодировку, которую вы укажете.
При этом на содержимое БД это никак не влияет.

Странно, может это все руки,

Странно, может это все руки, поступаю так:

Запускаем PSQL Shell (psql), после ввода названия сервера, порта, БД, пользователя и пароля..

music1=# SET CLIENT_ENCODING TO 'WIN1251';
(выводятся по прежнему кракозябры)

Еще пробовал
music1=# \encoding win1251; (тоже нет)

и менять строку #client_encoding = sql_ascii (в postgresql.conf) на #client_encoding = win1251
(все как раньше) Хотя результаты запросов, если их вводить в pgAdmin (кнопка "выполнить пользовательские sql-запросы"), выводятся нормально.

Простите, а вы что не в

Простите, а вы что не в курсе, что консоль Windows работает в кодировке CP866? (кодировке DOS, а не Windows. Это из-за русских имён файлов сложилось по исторической причине)

Чтобы не создавать новую тему, добавлю вопрос сюда

Так все таки, как сделать, чтобы в консоли psql были русские буквы? У мене не получается.

По порядку рассказываю, что я делаю.

1. Система Windows XP. Кодирока консоли 866.

2. Во время инсталяции на вопрос про "Locale" я оставил [Default locale].

3. Пробую войти в консоль psql. После ввода server, database, port, username, пароль я получаю:

ПРЕДУПРЕЖДЕНИЕ: Кодовая страница консоли (866) отличается от основной
                страницы Windows (1251).
                8-битовые (русские) символы могут отображаться некорректно.
                Подробнее об этом смотрите документацию psql, раздел
                "Notes for Windows users".

4. Нашел этот "Notes for Windows users" (здесь), там вообще написано то, что вводить нужно не в консоль psql, а в виндовскую cmd:

Set the code page by entering cmd.exe /c chcp 1252.

Команда cmd.exe /c chcp 1252 явно не для консоли psql. Значит ответ из официального мануала в данном случае не решает проблему.

5. Прочитав эту ветку пробую сначала посмотреть какая кодировка стотит в psql изначально (я еще ничего не менял):

postgres=# \encoding
WIN1251

Т.е. стоит 1251. А у моей консоли - 866. Пробую поставить WIN866:

postgres=# SET CLIENT_ENCODING TO 'WIN866';
SET
postgres=# \encoding
WIN866
postgres=# \?
╬с∙шх
  \copyright             єёыютш  шёяюы№чютрэш  ш ЁрёяЁюёЄЁрэхэш  PostgreSQL
  \g [╘└╔╦] шыш ;        т√яюыэшЄ№ чряЁюё
                         (ш эряЁртшЄ№ Ёхчєы№ЄрЄ√ т Їрщы шыш ърэры |)
  \h [╚╠▀]               ёяЁртър яю чрфрээюьє SQL-юяхЁрЄюЁє; * - яю тёхь
  \q                     т√щЄш шч psql

Получаю кракозябры.

Пробовал обратно ставить WIN1251, пробовал UTF8. Ничего не помогает, кракозябры и все.
Шрифт консоли переключал с "Точечные шрифты" на "Lucinda Console". Тоже не помогает.

Что я делаю не так? Как его "русифицировать"?
Спасибо.

SET CLIENT_ENCODING

SET CLIENT_ENCODING устанавливает кодировку для вывода значений из БД, а не хелпа.

Воспользуйтесь рекомендацией

Воспользуйтесь рекомендацией "Set the code page by entering cmd.exe /c chcp 1252."
т.е. запускаете cmd.exe, набираете "chcp 1251", далее enter. Выйдет сообщение
Текущая кодовая страница: 1251

После этого запускаете psql.
Кодовую страницу необходимо устанавливать при каждом запуске cmd.

Прочитал все что было выше, в

Прочитал все что было выше, в конечном итоге это помогает только самого warning-а. В итоге после смены кодировки у меня становится не читаемый ранее читаемый текст, а не читаемый текст из help-a по команде \? остается кракозяброй. При всем, при том, переводчики кодировки утверждают, что действительно для перевода help-a требовалось заменить CP866 → CP1251. В следствии чего вопрос - как перевести хелп на читабельный язык в консоли?

Если надо будет копировать какой-то кусок текста из консоли сюда - скажите.

Кодировка консоли

Всё проще простого. Заходишь в консоль, набираешь:

\! chcp 1251

и всё!

Шрифт, действительно, удобнее выбрать Consolas. Посмотреть можно здесь: http://1drv.ms/1vARg2t.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023