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

- Вопрос задан более трёх лет назад
- 3515 просмотров
Комментировать
Решения вопроса 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: Смена кодировки у консоли
Да, я действительно использую гноме-терм, спасибо за совет ) И всё таки было бы интересно узнать как это сделать без помощи менюшек)
Изменить кодировку LC_COLLATE — PostgreSQL — Ответ 15681993
Доброго всем дня. Прошу помощи. В БД новичок. Пытаюсь разобраться в боевом режиме.
Инструкция по развертыванию БД по шаблону
PostgreSQL
Общие требования
1. СУБД PostgreSQL должна быть установлена с русской локалью (locale).
При создании базы данных используются категория сортировки (LC_COLLATE) и ка-
тегория типов символов (LC_CTYPE), установленные в шаблоне template0,они долж-
ны быть совместимы с кодировкой UTF8.
После установки Postgresql 13 с русской локалью (locale) на Windows 7 ultimate x64? у меня получается так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
-- Database: postgres -- DROP DATABASE postgres; CREATE DATABASE postgres WITH OWNER = postgres ENCODING = 'UTF8' LC_COLLATE = '[B]Russian_Russia.1251[/B]' LC_CTYPE = '[B]Russian_Russia.1251[/B]' TABLESPACE = pg_default CONNECTION LIMIT = -1; COMMENT ON DATABASE postgres IS 'default administrative connection database';
Каким образом можно изменить кодировку сортировки и типов символов? Уже обгуглился, ничего не получается. Из pgAdmin не даёт изменить.
При создании БД по шаблону вылетает ошибка: «Неверный формат хранилища».
Добавлено через 1 час 31 минуту
Установил PostgreSQL 12 (почему-то 13 версии в репозитарии не находит) на Linux Mint.
Работает.
1 2 3 4 5 6 7 8
virt@0001:~$ sudo su - postgres postgres@0001:~$ psql psql (12.8 (Ubuntu 12.8-0ubuntu0.20.04.1)) Type "help" for help. postgres=# \conninfo You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432". postgres=#
—————————————
Локаль тоже правильная
1 2 3 4 5 6 7 8 9 10 11 12 13 14
- DATABASE: postgres -- DROP DATABASE postgres; CREATE DATABASE postgres WITH OWNER = postgres ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'ru_RU.UTF-8' LC_CTYPE = 'ru_RU.UTF-8' CONNECTION LIMIT = -1; COMMENT ON DATABASE postgres IS 'default administrative connection database';
Теперь другая беда: не могу отредактировать файл postgresql.conf в соответствии с инструкцией.
Редактировал nano, vi, mcedit, pgAdmin3 после чего postgres перестает работать.
После редактирования postgresql.conf делаю:
1 2 3 4 5 6 7
virt@0001:~$ sudo service postgresql restart virt@0001:~$ sudo su - postgres postgres@0001:~$ psql psql: error: could not connect to server: Нет такого файла или каталога Is the server running locally and accepting connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"? postgres@0001:~$
Возвращаю postgresql.conf из backup’a перезагружаю демон постгри и опять работает
Как и чем вы этот файл редактируете?
| Меню пользователя @ sokolof |