PostgreSQL — Кириллица в psql под Windows
В статье пойдёт речь о том, как добиться корректного вывода кириллицы в «консоли» Windows ( cmd.exe ).
- 1 Описание проблемы
- 2 Решение проблемы
- 2.1 Суть
- 2.2 Конкретные действия
- 2.2.1 Супер быстро и просто
- 2.2.2 Быстро и просто
- 2.2.3 Посложнее и подольше
Описание проблемы
В дистрибутив 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 предупреждает при начале работы:
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.
Значит, надо как-то добиться, чтобы кодировка была одна.
В разных источниках встречаются разные рецепты, включая правку реестра и подмену файлов в системных папках Windows. Ничего этого делать не нужно, достаточно всего трёх шагов:
- сменить шрифт у cmd.exe ;
- сменить текущую кодовую страницу cmd.exe ;
- сменить кодировку на стороне клиента в psql .
Конкретные действия
Супер быстро и просто
Запускаете cmd.exe , оттуда psql :
psql -d ВАШАБАЗА -U ВАШЛОГИН
psql \! chcp 1251
Быстро и просто
Запускаете cmd.exe , оттуда psql :
psql -d ВАШАБАЗА -U ВАШЛОГИН
Вводите пароль (если установлен) и выполняете команду:
set client_encoding='WIN866';
И всё. Теперь результаты запроса, содержащие кириллицу, будут отображаться нормально. Но есть небольшой косяк:
Потому предлагаем ещё способ, который этого недостатка лишён.
Посложнее и подольше
Запустить cmd.exe , нажать мышью в
правомлевом верхнем углу окна, там Свойства — Шрифт — выбрать Lucida Console. Нажать ОК.chcp 1251
В ответ выведет:
Текущая кодовая страница: 1251
psql -d ВАШАБАЗА -U ВАШЛОГИН
Кстати, обратите внимание — теперь предупреждения о несовпадении кодировок нет.
set client_encoding='win1251';
Всё, теперь кириллица будет нормально отображаться.
Поменять кодировку PostgreSQL?
Работаю с windows 7
Ребят, начинаю работать с ROR и столкнулся сразу на проблему, после установки PostgreSQL запускаю батник runpsql.bat который лежит в scripts/runpsql.bat. Делаю соединение:
server[localhost]: localhost
Database [postgres]: postgres
Port[5432]:5432
Username[postgres]:postgres
Password[postgres]:postgres
и выкидывает такое предупреждение:
пишу команду \dg
и выводит таблицу в абракадабре
Ребят, если кто знает решение: буду очень признателен.
всячески пытался, не получается.- Вопрос задан более трёх лет назад
- 5643 просмотра
Как «исправить» кодировку psql?
В общем, нужно исправить это так, чтоб psql всегда была на английском языке? Как так сделать?
- Вопрос задан более трёх лет назад
- 4420 просмотров
Комментировать
Решения вопроса 1
в командной строке перед запуском psql наберите chcp 1251 .
а ещё лучше в postgres используйте в качестве LC_COLLATE значение ru_RU.UTF-8, а в командной строке — chcp 65001 .
также можете ознакомиться с https://superuser.com/questions/269818/change-defa.Ответ написан более трёх лет назад
Нравится 1 1 комментарий
Вывод кракозябр в консоль sql shell
╤яЁртър
\? [commands] ёяЁртър яю ъюьрэфрь psql c \
\? options ёяЁртър яю ярЁрьхЄЁрь ъюьрэфэющ ёЄЁюъш psql
\? variables ёяЁртър яю ёяхЎшры№э√ь яхЁхьхээ√ь
\h [╚╠▀] ёяЁртър яю чрфрээюьє SQL-юяхЁрЄюЁє; * — яю тёхь┴єЇхЁ чряЁюёр
\e [╘└╔╦] [╤╥╨╬╩└] яЁртшЄ№ сєЇхЁ чряЁюёр (шыш Їрщы) тю тэх°эхь ЁхфръЄюЁх
\ef [╘╙═╩╓╚▀ [╤╥╨╬╩└]] яЁртшЄ№ юяЁхфхыхэшх ЇєэъЎшш тю тэх°эхь ЁхфръЄюЁх
\ev [VIEWNAME [LINE]] яЁртшЄ№ юяЁхфхыхэшх яЁхфёЄртыхэш тю тэх°эхь ЁхфръЄюЁх
\p т√тхёЄш ёюфхЁцшьюх сєЇхЁр чряЁюёютПодскажите, пожалуйста, как этого избежать.
Добавлено через 12 минут
LC_Collate, когда я набираю \l
Russian_Russia.1251
А в примере
en_US.UTF-8
Но для меня это пока не наводка.94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:Вывод кракозябр
. 1 . . . . Типа такого, пытался задать кодировку.Вывод кракозябр вместо английских букв
Доброго времени суток. Пыталась разобраться самостоятельно, но, к сожалению, недостаточно опыта.qt вывод sql запроса в консоль
подскажите пожалуйста очень нужно как вывести sql запрос в консоль #include <QCoreApplication>.Начал изучать базы данных в Microsoft SQL Server. вывод таблицы в консоль
У меня есть база данных, есть табличка, где есть строки и столбцы, заполненные информацией. эта.1241 / 960 / 379
Регистрация: 02.09.2012
Сообщений: 2,937нужно подкорректировать запуск psql.
если он вам все выводит в utf8, значит до запуска psql
нужно настроить кодировку в консоли командной строки windows
следующей командой.> chcp 65001 > psql -U user database database=# .
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесьКак добавить кириллицу в cmd/adb shell/sqlite3 консоль?
При выполнении запросов из ОС Windows 7 в cmd -> adb shell -> sqlite3 консоли кириллица из записей.Буферизация вывода в консоль, и цветной вывод в консоль
Потребовалось реализовать цветной вывод массивов в консоль(некоторые значения выделить зеленым).SQL Shell (psql)
Здравствуйте, установил postgresql, запускаю и не знаю, что вписывать. Час уже гуглю, ( P.S.Вывод текст в консоль (не получается вывести текст в консоль; попытка была в разделе menu, но вывелся ужас)
d_d1 segment ;начало сегмента данных m1 db 23, ‘=========MENU=========’, 23, ‘$’ m2 db 23, ‘| 1-.Или воспользуйтесь поиском по форуму: