Console code page 866 differs from windows code page 1251

Console code page 866 differs from windows code page 1251

C:\Program Files\PostgreSQL\9.0\bin>psql -U postgres
psql (9.0.3)
WARNING: Console code page (866) differs from Windows code page (1251)
8-bit characters might not work correctly. See psql reference
page «Notes for Windows users» for details.
Type «help» for help.

C:\Program Files\PostgreSQL\9.0\bin>chcp 1251
������� ������� ��������: 1251

C:\Program Files\PostgreSQL\9.0\bin>psql -U postgres
psql (9.0.3)
Type «help» for help.

postgres=# select * from «Test»;
name
———-
РямчикЦЙ
John
(2 rows)

��� ������? 27 ��� 11, 18:05����[10576400] �������� | ���������� �������� ����������

Re: psql cmd Windows 7 select ������� ����� �� ����� ������������ [new]
eye-cutter
Member

������:
���������: 124

Judo,

\encoding win-1251

27 ��� 11, 18:26����[10576522] �������� | ���������� �������� ����������
Re: psql cmd Windows 7 select ������� ����� �� ����� ������������ [new]
�������
Member

������:
���������: 2494

eye-cutter,

SET client_encoding=win866;

28 ��� 11, 00:19����[10577825] �������� | ���������� �������� ����������
Re: psql cmd Windows 7 select ������� ����� �� ����� ������������ [new]
Judo
Member

������:
���������: 688

C:\Program Files\PostgreSQL\9.0\bin>psql -U postgres
psql (9.0.3)
WARNING: Console code page (866) differs from Windows code page (1251)
8-bit characters might not work correctly. See psql reference
page «Notes for Windows users» for details.
Type «help» for help.

postgres=# \encoding win-1251
postgres=# select * from «Test»;

name
———-
╨�����╓╔
John

postgres=# SET client_encoding=win866;
SET
postgres=# select * from «Test»;
name
———-
���������
Rom

Console code page 866 differs from windows code page 1251

Может нелепый вопрос, но ни в документации ни в 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

  • Войдите или зарегистрируйтесь, чтобы добавлять комментарии

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

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

  • Войдите или зарегистрируйтесь, чтобы добавлять комментарии

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

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

  • Войдите или зарегистрируйтесь, чтобы добавлять комментарии

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

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

  • Войдите или зарегистрируйтесь, чтобы добавлять комментарии

Так в 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, пароль я получаю:

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 изначально (я еще ничего не менял):

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

Пробовал обратно ставить 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.

Призрак Басенджи

Записки начинающего программиста.

27 августа 2018 г.

PostgreSQL. Кириллица в psql под Windows

В статье речь идет о том, как добиться корректного вывода кириллицы в консоли Windows – cmd.exe.

Описание проблемы

Решение проблемы

Конкретные действия

Очень быстро и просто

psql -d ТвояБД -U ТвойЛогин

psql \! chcp 1251

Быстро и просто

Запускаем cmd.exe, оттуда psql:

psql -d ТвояБД -U ТвойЛогин

Вводим пароль (если установлен) и выполняем следующую команду:

И все. Теперь результаты запроса, содержащие кириллицу, будут отображаться нормально. Но есть небольшой косяк:

Посложнее и подольше

В ответ выведет:

Текущая кодовая страница: 1251

psql -d ТвояБД -U ТвойЛогин

Кстати, обратим внимание – теперь предупреждения о несовпадении кодировок нет.

Вот и все, теперь кириллица будет нормально отображаться.
Проверяем:

проблема с кодировкой PSQL

Работаю в windows 10, в файле находится INSERT в с данными в базу postgresql, часть данных кириллицей написана. При импорте данных через cmd

происходит корректное отображение данных в таблице psql (id 2, 3 таблицы). Но когда тот же самый файл импортирую через оболочку psql

кириллические символы отображаются в psql уже как кракозябры (id 1, 4).

кодировка базы такая:

есть предположение, что это из-за локаля. Но как поменять его не знаю. Пробовал при создании базы указывать LC_COLLATE=’Russian_Russia.UTF8′ или LC_COLLATE=’ru_RU.UTF8′ , но psql таких значений не принимает, только Russian_Russia.1251 или Russian_Russia.866 .

Подскажите, пожалуйста, как брать данные из файла, находясь в psql, чтобы кириллица корректно отображалась.

2 ответа 2

В интерактивном режиме psql сам выбирает и устанавливает client_encoding в соответствии с настройками консоли, а в пакетном — он устанавливается сервером по умолчанию в кодировку базы (или в сохранённое значение).

На сколько я понимаю, файл в utf8, тогда есть два варианта:

  • перекодировать в cp1251, но тогда сломается пакетный импорт
  • сделай перед интерактивны импортом SET client_encoding TO ‘utf8’ , а лучше добавить это прямо в начало файла.

LC_COLLATE , как и одноимённая переменная ни как не определяет кодировку базы или соединения, а задаёт лишь порядок сортировки строк. Полный список возможных параметоров системно-зависим и можно посмотреть, например, в

PostgreSQL — Кириллица в psql под Windows

В статье пойдёт речь о том, как добиться корректного вывода кириллицы в «консоли» Windows ( cmd.exe ).

Содержание

Описание проблемы

В дистрибутив PostgreSQL, помимо всего прочего, для работы с СУБД входит:

  • приложение с графическим интерфейсом pgAdmin ;
  • консольная утилита psql .

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

Ну и зачем тогда работать с psql , кому нужно долбить клавиатурой в консольке, когда можно всё сделать красиво и быстро в pgAdmin ? Ну, не всегда pgAdmin доступен, особенно если речь идёт об удалённой машине. Кроме того, выполнение SQL-запросов в текстовом режиме консоли — это +10 к хакирству.

Решение проблемы

  • MS Windows 7 SP1 x64;
  • PostgreSQL 8.4.12 x32.

На сервере имеется БД, созданная в кодировке UTF8.

Суть проблемы в том, что cmd.exe работает (и так будет до скончания времён) в кодировке CP866 , а сама Windows — в WIN1251 , о чём psql предупреждает при начале работы:

Значит, надо как-то добиться, чтобы кодировка была одна.

В разных источниках встречаются разные рецепты, включая правку реестра и подмену файлов в системных папках Windows. Ничего этого делать не нужно, достаточно всего трёх шагов:

  1. сменить шрифт у cmd.exe ;
  2. сменить текущую кодовую страницу cmd.exe ;
  3. сменить кодировку на стороне клиента в psql .

Конкретные действия

Супер быстро и просто

Запускаете cmd.exe , оттуда psql :

Быстро и просто

Запускаете cmd.exe , оттуда psql :

Вводите пароль (если установлен) и выполняете команду:

И всё. Теперь результаты запроса, содержащие кириллицу, будут отображаться нормально. Но есть небольшой косяк:

Потому предлагаем ещё способ, который этого недостатка лишён.

Посложнее и подольше

Запустить cmd.exe , нажать мышью в правом левом верхнем углу окна, там Свойства — Шрифт — выбрать Lucida Console. Нажать ОК.

В ответ выведет:

Кстати, обратите внимание — теперь предупреждения о несовпадении кодировок нет.

Всё, теперь кириллица будет нормально отображаться.

Читайте также:  Как отключить уведомления срок действия вашей лицензии windows истекает
Оцените статью