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