Как «исправить» кодировку psql?
В общем, нужно исправить это так, чтоб psql всегда была на английском языке? Как так сделать?

- Вопрос задан более трёх лет назад
- 3853 просмотра
Комментировать
Решения вопроса 1

в командной строке перед запуском psql наберите chcp 1251 .
а ещё лучше в postgres используйте в качестве LC_COLLATE значение ru_RU.UTF-8, а в командной строке — chcp 65001 .
также можете ознакомиться с https://superuser.com/questions/269818/change-defa.
Ответ написан более трёх лет назад
Нравится 1 1 комментарий
Помощь
Проблемы с кодировками MySQL могут возникать для версий 4.1 и выше, поскольку для них введена возможность задания разной кодировки для разных уровней иерархии базы данных (сервер, база данных, таблица, столбец) и отдельно для соединения сервера с клиентом. По умолчанию MySQL имеет кодировку latin1 на всех уровнях.
Кодировка, в которой хранятся данные на сервере MySQL, должна совпадать с кодировкой самих данных. Например, для русских символов используется кодировка cp1251. Если в таблице будут храниться записи русскими буквами, то и кодировка этой таблицы должна быть задана cp1251, иначе отображаться будут не русские символы, а знаки вопроса или другие знаки.
При создании баз данных сразу указывайте кодировку для хранения символов, поскольку в случае отсутствия явно заданной кодировки будет использовано значение по умолчанию (latin1). Например, создавайте базу данных командой:
create database `my-db` default charset cp1251;
Кодировка соединения сервера с клиентом устанавливает, в каком виде будут передаваться данные между ними. Например, если в скрипте на сайте используются русские символы, то при обращении сайта к базе данных MySQL должен правильно распознать эти символы, чтобы корректно выполнить скрипт. Если кодировка соединения использует значение по умолчанию latin1, то русские символы сервер баз данных не сможет правильно распознать, следовательно, скрипт выполнится с ошибкой.
Установите нужную вам кодировку соединения сразу после подключения к серверу MySQL запросом:
set names cp1251
Существует ряд клиентов, которые не могут установить нужную кодировку, имеют свою собственную. Для подобных случаев внесите в файл my.cnf в секцию [mysqld] строку:
set init_connect="set names cp1251" где cp1251 – это нужная вам кодировка.
В этом случае сервер выполнит команду «set names cp1251» сразу после соединения с клиентом и установит указанную в запросе кодировку.
Самые распространенные в России кодировки следующие:
utf8, cp866 (DOS), cp1251 (Windows), koi8r
Установка и использование на всех уровнях сервера баз данных одинаковой кодировки устраняет 90% проблем с кодировкой в MySQL.
Как русифицировать MySQL?
Внесите следующие изменения в файл my.cnf:
[client] default-character-set=cp1251 [mysqld] character-set-server=cp1251 collation-server=cp1251_general_ci init-connect = "set names cp1251"
Перезапустите MySQL сервер.
Смена кодировки у консоли
Есть база данных с кодировкой cp1251, все таблицы и столбцы в ней имеют ту же самую кодировку. При работе с ней из скрипта я пишу запрос SET NAMES cp1251, и всё прекрасно выводится. Запускаю консоль, mysql -u root -p —default-character-set=cp1251 выбираю базу, пишу запрос к таблице — выводятся кракозябры, устанавливаю SET NAMES utf8, делаю тот же запрос — всё выводится нормально.
Как я понимаю, проблема в том что у меня в консоли кодировка utf8 (Debian), как можно сменить у консоли кодировку на cp1251? временно разумеется
Shaytank
08.02.08 23:29:27 MSK

Re: Смена кодировки у консоли
LANG=ru_RU_CP1251 или как там у тебя локаль зовется нужная
iRunix ★★★★
( 08.02.08 23:31:08 MSK )

Re: Смена кодировки у консоли
если используешь gnome-terminal или konsole просто выбери в меню нужную кодировку
cobold ★★★★★
( 09.02.08 01:15:49 MSK )
Ответ на: Re: Смена кодировки у консоли от iRunix 08.02.08 23:31:08 MSK
Re: Смена кодировки у консоли
Попробовал, кодировка всё равно осталась утф8. Т.е. было ru_RU.UTF8, поставил ru_RU.CP1251, всё осталось без изменений. Что делаю неправильно?
Shaytank
( 09.02.08 18:28:25 MSK ) автор топика
Ответ на: Re: Смена кодировки у консоли от cobold 09.02.08 01:15:49 MSK
Re: Смена кодировки у консоли
Да, я действительно использую гноме-терм, спасибо за совет ) И всё таки было бы интересно узнать как это сделать без помощи менюшек)
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 предупреждает при начале работы:
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';
Всё, теперь кириллица будет нормально отображаться.