|
|
Строка 1: |
Строка 1: |
| [[Файл:Postgresql logo.png|right]]
| | Привлекательность аренды крана-манипулятора в СПб подтверждается самими благодарными клиентами, которые нуждались именно в таком виде сервиса. Рентабельность говорит сама за себя, когда со всеми работами, справляется всего одна машина. Вам только стоит ознакомиться со способом оформления заказа, и вы сэкономите массу денег! kr78mn47 |
| | |
| В статье пойдёт речь о том, как добиться корректного вывода кириллицы в "консоли" Windows (<code>cmd.exe</code>).
| |
| | |
| == Описание проблемы ==
| |
| | |
| В дистрибутив PostgreSQL, помимо всего прочего, для работы с СУБД входит:
| |
| * приложение с графическим интерфейсом <code>pgAdmin</code>;
| |
| * консольная утилита <code>psql</code>.
| |
| | |
| При работе с <code>psql</code> в среде Windows пользователи <s>всегда</s> довольно часто сталкиваются с проблемой вывода кириллицы. Например, при отображении результатов запроса к таблице, в полях которых хранятся строковые данные на русском языке.
| |
| | |
| [[Файл:Psql.codepage.fail.png|center]]
| |
| | |
| Ну и зачем тогда работать с <code>psql</code>, кому нужно долбить клавиатурой в консольке, когда можно всё сделать красиво и быстро в <code>pgAdmin</code>? Ну, не всегда <code>pgAdmin</code> доступен, особенно если речь идёт об удалённой машине. Кроме того, выполнение SQL-запросов в текстовом режиме консоли - это +10 к [http://lurkmore.to/%D0%9A%D1%83%D0%BB%D1%85%D0%B0%D1%86%D0%BA%D0%B5%D1%80 хакирству].
| |
| | |
| == Решение проблемы ==
| |
| | |
| Версии ПО:
| |
| * MS Windows 7 SP1 x64;
| |
| * PostgreSQL 8.4.12 x32.
| |
| | |
| На сервере имеется БД, созданная в кодировке UTF8.
| |
| | |
| === Суть ===
| |
| | |
| Суть проблемы в том, что <code>cmd.exe</code> работает (и так будет до скончания времён) в кодировке <code>CP866</code>, а сама Windows - в <code>WIN1251</code>, о чём <code>psql</code> предупреждает при начале работы:
| |
| | |
| 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. Ничего этого делать не нужно, достаточно всего трёх шагов:
| |
| # сменить шрифт у <code>cmd.exe</code>;
| |
| # сменить текущую кодовую страницу <code>cmd.exe</code>;
| |
| # сменить кодировку на стороне клиента в <code>psql</code>.
| |
| | |
| === Конкретные действия ===
| |
| | |
| ==== Супер быстро и просто ====
| |
| | |
| Запускаете <code>cmd.exe</code>, оттуда <code>psql</code>:
| |
| | |
| psql -d ВАШАБАЗА -U ВАШЛОГИН
| |
| | |
| Далее:
| |
| | |
| psql \! chcp 1251
| |
| | |
| [[Файл:Posgresql console 1251.png|400px]]
| |
| | |
| ==== Быстро и просто ====
| |
| | |
| Запускаете <code>cmd.exe</code>, оттуда <code>psql</code>:
| |
| | |
| psql -d ВАШАБАЗА -U ВАШЛОГИН
| |
| | |
| Вводите пароль (если установлен) и выполняете команду:
| |
| | |
| set client_encoding='WIN866';
| |
| | |
| И всё. Теперь результаты запроса, содержащие кириллицу, будут отображаться нормально. Но есть небольшой косяк:
| |
| | |
| [[Файл:Psql.codepage.866.png|center]]
| |
| | |
| Потому предлагаем ещё способ, который этого недостатка лишён.
| |
| | |
| ==== Посложнее и подольше ====
| |
| | |
| Запустить <code>cmd.exe</code>, нажать мышью в <s>правом</s> левом верхнем углу окна, там Свойства - Шрифт - выбрать Lucida Console. Нажать ОК.
| |
| | |
| [[Файл:Psql.console.font.png|center]]
| |
| | |
| Выполнить команду:
| |
| | |
| chcp 1251
| |
| | |
| В ответ выведет:
| |
| | |
| Текущая кодовая страница: 1251
| |
| | |
| Запустить <code>psql</code>;
| |
| | |
| psql -d ВАШАБАЗА -U ВАШЛОГИН
| |
| | |
| Кстати, обратите внимание - теперь предупреждения о несовпадении кодировок нет.
| |
| | |
| Выполнить:
| |
| | |
| set client_encoding='win1251';
| |
| | |
| Он выведет:
| |
| | |
| SET
| |
| | |
| Всё, теперь кириллица будет нормально отображаться.
| |
| | |
| Проверяем:
| |
| | |
| [[Файл:Psql.codepage.ok.png|center]]
| |
| | |
| [[Категория:Погроммирование]]
| |