Предупреждение кодовая страница консоли 866 отличается от основной страницы windows 1251

Предупреждение кодовая страница консоли 866 отличается от основной страницы windows 1251

Может нелепый вопрос, но ни в документации ни в FAQ ничего похожего не нашел.
Есть проблемы с отображением русскоязычного текста в консоли (кодировка БД — WIN1251)
При запуске консоль выдает варнинг: Console code page differs from Windows code page, 8-bit craracters might not work correctly. See psql reference page «Notes for Windows users» for delails. (страничку это не смог найти как ни искал), полагаю что проблема в различии кодировки консоли и БД.

Можно-ли как-нибудь поменять кодировку консоли ну или как-то это исправить, если причина в другом?

  • Войдите или зарегистрируйтесь, чтобы добавлять комментарии

Можно: SET CLIENT_ENCODING TO

  • Войдите или зарегистрируйтесь, чтобы добавлять комментарии

Спасибо, но не помогло, это

Спасибо, но не помогло, это уже пробовал) Все равно иероглифы вместо русских букв.

  • Войдите или зарегистрируйтесь, чтобы добавлять комментарии

Не ту кодировку выбрали вот и

Не ту кодировку выбрали вот и всё. Всем помогает, вам нет?

  • Войдите или зарегистрируйтесь, чтобы добавлять комментарии

Дело в том, что она не

Дело в том, что она не меняется, как была 866, так и остается, может я куда-то не туда ввожу команду? (пробовал в саму консоль и в граф. интерфейсе, команда выполняется (за

  • Войдите или зарегистрируйтесь, чтобы добавлять комментарии

Так в psql надо команду

Так в psql надо команду вводить, при чём здесь консоль?
Команда переключает вывод символов PostgreSQL в ту кодировку, которую вы укажете.
При этом на содержимое БД это никак не влияет.

  • Войдите или зарегистрируйтесь, чтобы добавлять комментарии

Странно, может это все руки,

Странно, может это все руки, поступаю так:

Запускаем PSQL Shell (psql), после ввода названия сервера, порта, БД, пользователя и пароля..

music1=# SET CLIENT_ENCODING TO ‘WIN1251’;
(выводятся по прежнему кракозябры)

Еще пробовал
music1=# \encoding win1251; (тоже нет)

и менять строку #client_encoding = sql_ascii (в postgresql.conf) на #client_encoding = win1251
(все как раньше) Хотя результаты запросов, если их вводить в pgAdmin (кнопка «выполнить пользовательские sql-запросы»), выводятся нормально.

  • Войдите или зарегистрируйтесь, чтобы добавлять комментарии
Читайте также:  Каталог рабочих столов windows 10

Простите, а вы что не в

Простите, а вы что не в курсе, что консоль Windows работает в кодировке CP866? (кодировке DOS, а не Windows. Это из-за русских имён файлов сложилось по исторической причине)

  • Войдите или зарегистрируйтесь, чтобы добавлять комментарии

Чтобы не создавать новую тему, добавлю вопрос сюда

Так все таки, как сделать, чтобы в консоли psql были русские буквы? У мене не получается.

По порядку рассказываю, что я делаю.

1. Система Windows XP. Кодирока консоли 866.

2. Во время инсталяции на вопрос про «Locale» я оставил [Default locale].

3. Пробую войти в консоль psql. После ввода server, database, port, username, пароль я получаю:

4. Нашел этот «Notes for Windows users» (здесь), там вообще написано то, что вводить нужно не в консоль psql, а в виндовскую cmd:

Set the code page by entering cmd.exe /c chcp 1252.

Команда cmd.exe /c chcp 1252 явно не для консоли psql. Значит ответ из официального мануала в данном случае не решает проблему.

5. Прочитав эту ветку пробую сначала посмотреть какая кодировка стотит в psql изначально (я еще ничего не менял):

Т.е. стоит 1251. А у моей консоли — 866. Пробую поставить WIN866:

Пробовал обратно ставить WIN1251, пробовал UTF8. Ничего не помогает, кракозябры и все.
Шрифт консоли переключал с «Точечные шрифты» на «Lucinda Console». Тоже не помогает.

Что я делаю не так? Как его «русифицировать»?
Спасибо.

  • Войдите или зарегистрируйтесь, чтобы добавлять комментарии

SET CLIENT_ENCODING

SET CLIENT_ENCODING устанавливает кодировку для вывода значений из БД, а не хелпа.

  • Войдите или зарегистрируйтесь, чтобы добавлять комментарии

Воспользуйтесь рекомендацией

Воспользуйтесь рекомендацией «Set the code page by entering cmd.exe /c chcp 1252.»
т.е. запускаете cmd.exe, набираете «chcp 1251«, далее enter. Выйдет сообщение
Текущая кодовая страница: 1251

После этого запускаете psql.
Кодовую страницу необходимо устанавливать при каждом запуске cmd.

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.
Читайте также:  Бэкап ключа windows 10

На сервере имеется БД, созданная в кодировке UTF8.

Суть проблемы в том, что cmd.exe работает (и так будет до скончания времён) в кодировке CP866 , а сама Windows — в WIN1251 , о чём psql предупреждает при начале работы:

Значит, надо как-то добиться, чтобы кодировка была одна.

В разных источниках встречаются разные рецепты, включая правку реестра и подмену файлов в системных папках Windows. Ничего этого делать не нужно, достаточно всего трёх шагов:

  1. сменить шрифт у cmd.exe ;
  2. сменить текущую кодовую страницу cmd.exe ;
  3. сменить кодировку на стороне клиента в psql .

Конкретные действия

Супер быстро и просто

Запускаете cmd.exe , оттуда psql :

Быстро и просто

Запускаете cmd.exe , оттуда psql :

Вводите пароль (если установлен) и выполняете команду:

И всё. Теперь результаты запроса, содержащие кириллицу, будут отображаться нормально. Но есть небольшой косяк:

Потому предлагаем ещё способ, который этого недостатка лишён.

Посложнее и подольше

Запустить cmd.exe , нажать мышью в правом левом верхнем углу окна, там Свойства — Шрифт — выбрать Lucida Console. Нажать ОК.

В ответ выведет:

Кстати, обратите внимание — теперь предупреждения о несовпадении кодировок нет.

Всё, теперь кириллица будет нормально отображаться.

проблема с кодировкой PSQL

Работаю в windows 10, в файле находится INSERT в с данными в базу postgresql, часть данных кириллицей написана. При импорте данных через cmd

происходит корректное отображение данных в таблице psql (id 2, 3 таблицы). Но когда тот же самый файл импортирую через оболочку psql

кириллические символы отображаются в psql уже как кракозябры (id 1, 4).

кодировка базы такая:

есть предположение, что это из-за локаля. Но как поменять его не знаю. Пробовал при создании базы указывать LC_COLLATE=’Russian_Russia.UTF8′ или LC_COLLATE=’ru_RU.UTF8′ , но psql таких значений не принимает, только Russian_Russia.1251 или Russian_Russia.866 .

Подскажите, пожалуйста, как брать данные из файла, находясь в psql, чтобы кириллица корректно отображалась.

2 ответа 2

В интерактивном режиме psql сам выбирает и устанавливает client_encoding в соответствии с настройками консоли, а в пакетном — он устанавливается сервером по умолчанию в кодировку базы (или в сохранённое значение).

На сколько я понимаю, файл в utf8, тогда есть два варианта:

  • перекодировать в cp1251, но тогда сломается пакетный импорт
  • сделай перед интерактивны импортом SET client_encoding TO ‘utf8’ , а лучше добавить это прямо в начало файла.

LC_COLLATE , как и одноимённая переменная ни как не определяет кодировку базы или соединения, а задаёт лишь порядок сортировки строк. Полный список возможных параметоров системно-зависим и можно посмотреть, например, в

Предупреждение кодовая страница консоли 866 отличается от основной страницы windows 1251

Иногда по неизвестным причинам некоторые команды русскоязычной версии Windows выводят русский текст в нечитаемой кодировке, кракозябрами.

Например, команда help выводит нормальный текст:

Но при этом подсказка telnet выводит в ответ кракозябры.

Читайте также:  Не вижу значок windows 10

Так может происходить, к примеру, если текущая кодировка консоли 866, а утилита telnet.exe почему-то выводит текст в кодировке 1251. Вывести текст в нужной кодировке поможет команда chcp, которая устанавливает нужную кодировку.

Вот так можно посмотреть текущую кодировку консоли:

А вот так можно поменять кодировку на 1251, после чего вывод подсказки telnet будет отображаться нормально:

К сожалению, заранее угадать, к какой кодировке выводится текст, невозможно, поэтому проще попробовать установить командой chcp разные кодировки, чтобы добиться правильного отображения русского текста. Обычно используются кодировки 866 (кодировка русского текста DOS), 1251 (кодировка русского текста Windows), 65001 (UTF-8).

Русский текст в консоли

мы получим «абракадабру»:

Почему так происходит?
Консоль работает в кодировке DOS (codepage 866).
Блокнот Windows создает пакетный файл в кодировке WIN (codepage 1251).

Поэтому, когда Вы запускаете файл, консоль отображает его в своей (DOS) кодировке.

1 способ (сохранение файла в кодировке OEM-866):
Скачаем текстовый редактор, поддерживающий сохранение текста в кодировке OEM-866 (DOS) :

Чтобы создать новый файл в кодировке DOS:
Меню «Файл» -> «Сохранить как. » -> из выпадающего списка выбрать «Кодировка OEM-866«.
Файл должен иметь расширение bat или cmd.

Для себя я настроил AkelPad так, чтобы он всегда сохранял в кодировке OEM-866 (Настройки -> Параметры -> Кодировка по-умолчанию -> OEM-866.)

Скачать.
Сам пользуюсь вот такой модификацией что и Вам советую. Скачать.
Или качаем с официального сайта.

Чтобы правильно сконвертировать уже имеющийся в редакторе код с кириллицей :
Войти в редактор.
1) Ctrl+A, скопировать код.
2) Удалить код.
3) Меню «Кодировки» -> выбрать «Сохранить в DOS-866«.
4) Вставить код.
5) Сохранить, запустить.

Полезные горячие комбинации клавиш:
Запуск скрипта (Ctrl + F5)
На весь экран (F11)
Сохранить (Ctrl + S)
Открыть в кодировке WIN (Alt + W)
Открыть в кодировке DOS (Alt + D)

Чтобы создать новый файл в кодировке DOS:
Меню «Кодировки» -> «Кодировки» -> «Кириллица» -> «OEM-866»
«Файл» -> «Сохранить как. » -> пишем имя файла и расширение bat или cmd -> Сохранить.

Чтобы правильно сконвертировать уже имеющийся в редакторе код с кириллицей :
Войти в редактор.
1) Ctrl+A, скопировать код.
2) Удалить код.
3) Меню «Кодировки» -> «Кодировки» -> «Кириллица» -> «OEM-866»
4) Вставить код.
5) Сохранить, запустить.

Помните: в редакторе не должно быть видно «крякозябер», иначе это значит: Вы неправильно скопировали код.
В Windows Vista, 7 часто бывает, что код с форума «портиться» в буфере. Выход: когда копируете код, убедитесь, что включена русская раскладка клавиш.

2 способ (смена кодовой страницы):
Сменить кодовую страницу консоли.

А именно, в начале пакетного файла написать:

Оцените статью