- Console code page 866 differs from windows code page 1251
- Console code page 866 differs from windows code page 1251
- Можно: SET CLIENT_ENCODING TO
- Спасибо, но не помогло, это
- Не ту кодировку выбрали вот и
- Дело в том, что она не
- Так в psql надо команду
- Странно, может это все руки,
- Простите, а вы что не в
- Чтобы не создавать новую тему, добавлю вопрос сюда
- SET CLIENT_ENCODING
- Воспользуйтесь рекомендацией
- Призрак Басенджи
- 27 августа 2018 г.
- PostgreSQL. Кириллица в psql под Windows
- Описание проблемы
- Решение проблемы
- Конкретные действия
- Очень быстро и просто
- Быстро и просто
- Посложнее и подольше
- проблема с кодировкой PSQL
- 2 ответа 2
- PostgreSQL — Кириллица в psql под Windows
- Содержание
- Описание проблемы
- Решение проблемы
- Конкретные действия
- Супер быстро и просто
- Быстро и просто
- Посложнее и подольше
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)
��� ������?
| |
eye-cutter Member ������: | Judo, \encoding win-1251 |
27 ��� 11, 18:26����[10576522] �������� | ���������� �������� ���������� |
| |
������� Member ������: | eye-cutter, SET client_encoding=win866; |
28 ��� 11, 00:19����[10577825] �������� | ���������� �������� ���������� |
| |
Judo Member ������: | 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=# SET client_encoding=win866; Console code page 866 differs from windows code page 1251Может нелепый вопрос, но ни в документации ни в FAQ ничего похожего не нашел. Можно-ли как-нибудь поменять кодировку консоли ну или как-то это исправить, если причина в другом?
Можно: SET CLIENT_ENCODING TO
Спасибо, но не помогло, этоСпасибо, но не помогло, это уже пробовал) Все равно иероглифы вместо русских букв.
Не ту кодировку выбрали вот иНе ту кодировку выбрали вот и всё. Всем помогает, вам нет?
Дело в том, что она неДело в том, что она не меняется, как была 866, так и остается, может я куда-то не туда ввожу команду? (пробовал в саму консоль и в граф. интерфейсе, команда выполняется (за
Так в psql надо командуТак в psql надо команду вводить, при чём здесь консоль?
Странно, может это все руки,Странно, может это все руки, поступаю так: Запускаем PSQL Shell (psql), после ввода названия сервера, порта, БД, пользователя и пароля.. music1=# SET CLIENT_ENCODING TO ‘WIN1251’; Еще пробовал и менять строку #client_encoding = sql_ascii (в postgresql.conf) на #client_encoding = win1251
Простите, а вы что не вПростите, а вы что не в курсе, что консоль 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. Ничего не помогает, кракозябры и все. Что я делаю не так? Как его «русифицировать»?
SET CLIENT_ENCODINGSET CLIENT_ENCODING устанавливает кодировку для вывода значений из БД, а не хелпа.
Воспользуйтесь рекомендациейВоспользуйтесь рекомендацией «Set the code page by entering cmd.exe /c chcp 1252.» После этого запускаете psql. Призрак БасенджиЗаписки начинающего программиста. 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, тогда есть два варианта:
LC_COLLATE , как и одноимённая переменная ни как не определяет кодировку базы или соединения, а задаёт лишь порядок сортировки строк. Полный список возможных параметоров системно-зависим и можно посмотреть, например, в PostgreSQL — Кириллица в psql под WindowsВ статье пойдёт речь о том, как добиться корректного вывода кириллицы в «консоли» Windows ( cmd.exe ). СодержаниеОписание проблемыВ дистрибутив PostgreSQL, помимо всего прочего, для работы с СУБД входит:
При работе с psql в среде Windows пользователи Ну и зачем тогда работать с psql , кому нужно долбить клавиатурой в консольке, когда можно всё сделать красиво и быстро в pgAdmin ? Ну, не всегда pgAdmin доступен, особенно если речь идёт об удалённой машине. Кроме того, выполнение SQL-запросов в текстовом режиме консоли — это +10 к хакирству. Решение проблемы
На сервере имеется БД, созданная в кодировке UTF8. Суть проблемы в том, что cmd.exe работает (и так будет до скончания времён) в кодировке CP866 , а сама Windows — в WIN1251 , о чём psql предупреждает при начале работы: Значит, надо как-то добиться, чтобы кодировка была одна. В разных источниках встречаются разные рецепты, включая правку реестра и подмену файлов в системных папках Windows. Ничего этого делать не нужно, достаточно всего трёх шагов:
Конкретные действияСупер быстро и простоЗапускаете cmd.exe , оттуда psql :
Быстро и простоЗапускаете cmd.exe , оттуда psql : Вводите пароль (если установлен) и выполняете команду: И всё. Теперь результаты запроса, содержащие кириллицу, будут отображаться нормально. Но есть небольшой косяк: Потому предлагаем ещё способ, который этого недостатка лишён. Посложнее и подольшеЗапустить cmd.exe , нажать мышью в В ответ выведет: Кстати, обратите внимание — теперь предупреждения о несовпадении кодировок нет. Всё, теперь кириллица будет нормально отображаться. |