PostgreSQL - Кириллица в psql под Windows: различия между версиями
ILobster (обсуждение | вклад) м (→Суть) |
ILobster (обсуждение | вклад) м (→Суть) |
||
Строка 25: | Строка 25: | ||
=== Суть === | === Суть === | ||
Суть проблемы в том, что <code>cmd.exe</code> работает (и так будет до скончания времён) в кодировке <code>CP866</code>, а сама Windows - в <code>WIN2151</code>, о чём psql предупреждает при начале работы: | Суть проблемы в том, что <code>cmd.exe</code> работает (и так будет до скончания времён) в кодировке <code>CP866</code>, а сама Windows - в <code>WIN2151</code>, о чём <code>psql</code> предупреждает при начале работы: | ||
WARNING: Console code page (866) differs from Windows code page (1251) | WARNING: Console code page (866) differs from Windows code page (1251) |
Версия от 12:08, 28 мая 2013
В статье пойдёт речь о том, как добиться корректного вывода кириллицы в "консоли" 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 - в WIN2151
, о чём 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.
Конкретные действия
Запустить cmd.exe
, нажать мышью в правом верхнем углу окна, там Свойства - Шрифт - выбрать Lucida Console. Нажать ОК.
Выполнить команду:
chcp 1251
В ответ выведет:
Текущая кодовая страница: 1251
Запустить psql
;
psql -d ВАШАБАЗА -U ВАШЛОГИН
Теперь предупреждения о несовпадении кодировок не будет.
Выполнить:
set client_encoding='win1251';
Он выведет:
SET
Всё, теперь можно кириллица будет нормально отображаться. Проверяем: