PostgreSQL: Предупреждение: Кодовая страница консоли (437) отличается от кодовой страницы Windows (1252)
Использование PostgreSQL при подключении к db с помощью \c testdb
внутри SQL-запроса PostgreSQL SQL. Я успешно подключаюсь к db, но получаю следующее предупреждение:
postgres-# \c testdb
WARNING: Console code page (437) differs from Windows code page (1252)
8-bit characters might not work correctly. See psql reference
page "Notes for Windows users" for details.
You are now connected to database "testdb" as user "postgres".
testdb-#
Что означает это предупреждение? Как его решить?
Ответы
Ответ 1
Из документации PSQL:
PSQL построен как "консольное приложение". Поскольку окна консоли Windows используют другую кодировку, чем остальная система, вы должны быть особенно осторожны при использовании 8-битных символов в psql. Если psql обнаружит проблемную кодовую страницу консоли, он предупредит вас при запуске.
Чтобы изменить кодовую страницу консоли, необходимо две вещи: установить кодовую страницу, введя cmd.exe/c chcp 1252. (1252 - это кодовая страница, подходящая для немецкого языка; замените ее на свое значение.) Если вы используете Cygwin Вы можете поместить эту команду в /etc/profile.
Таким образом, чтобы удалить это предупреждение, вам нужно выполнить chcp 1252
перед chcp 1252
psql
. Использование chcp
без параметров дает вам текущую кодовую страницу.
Ответ 2
Чтобы сделать это еще более очевидным, файл, к которому @user3423801 добавляет строку
cmd.exe /c chcp 1252
находится в каталоге scripts
, где вы установили Postgre.
Например, в моем случае это
C:\Program Files\PostgreSQL\9.3\scripts\runpsql.bat
Ответ 3
Или вы можете просто ввести cmd.exe /c chcp 1252
в окне командной строки.
Ответ 4
Кодовая страница по умолчанию для CMD.exe отличается от значения по умолчанию для postgres... Для изменения для CMD.exe с помощью REGISTRY попробуйте следующее:
- Пуск → Выполнить → regedit
- Перейдите к [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor]
- Добавьте новое строковое значение с именем "Autorun" со значением "chcp 1252"
Затем снова запустите CMD.exe
Ответ 5
Ответ dvdgsng верен, но пример кода более явно.
@echo off
REM Copyright (c) 2012-2014, EnterpriseDB Corporation. All rights reserved
REM PostgreSQL server psql runner script for Windows
cmd.exe /c chcp 1252
SET server=localhost
SET /P server="Server [%server%]: "
Ответ 6
Откройте cmd.exe и запустите regedit
.
Перейдите на Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
Новое строковое значение с именем: Autorun
и измените значение на chcp 1252
Готово.
Ссылка: fooobar.com/questions/202329/...
Ответ 7
Я не мог понять, как установить его для Cygwin во всем мире. Похоже, это работает в моем скрипте bash
#!/bin/bash
cmd.exe /c chcp 1252 && psql -h myserver.postgres.database.azure.com -U [email protected] -d mydatabase
Ответ 8
После многократного поиска ответа, который имел для меня смысл, я нашел эту справочную цепочку электронной почты на сайте PostgreSQL, который в основном говорит, что нужно запустить chcp 1252
из открытого командного окна.
Затем я смог запустить мои команды PostgreSQL без предупреждения кода.
ПРИМЕЧАНИЕ. Это изменение не сохраняется, поэтому вы должны запускать его каждый раз, когда вы открываете новое окно команд, в котором вы планируете использовать команды PostgreSQL.
Ответ 9
Для Postgres 11
"ПРЕДУПРЕЖДЕНИЕ. Кодовая страница консоли (437) отличается от кодовой страницы Windows (1252) 8-разрядные символы могут работать неправильно. Дополнительные сведения см. на справочной странице psql" Примечания для пользователей Windows "."
Если вы не являетесь администратором на своем компьютере, добавьте строку "chcp 1252" в скрипт pg_env.bat, который находится в базовом каталоге вашей установки postgres. ' т.е. "C:\Program Files\PostgreSQL\11"
Если вы являетесь администратором на своем компьютере, вы можете изменить реестр, чтобы он запускал строку при каждом запуске "cmd.exe", как указано выше.
Ответ 10
В основном, установите кодировку консольного приложения с 8-битной на utf-8.
Для пользователей git bash перед запуском postgres выполните команду chcp.com 1252
chcp - консольная команда Windows, поэтому для ее выполнения в git bash может потребоваться добавить .com
git bash не может самостоятельно расширить chcp до полного исполняемого файла, поэтому вам нужно ввести полную команду.
Вот
Ответ 11
Чтобы сохранить свою кодовую страницу в pgsql.cmd(например, 1250), измените строку
chcp 1252 > nul
в
chcp 1250 > nul