Utilisation de PostgreSQL when I connect à une base de données utilisant \c testdb
dans l’invite SQL de la base de données PostgreSQL. Je me connecte avec succès à la base de données, mais je reçois l'avertissement suivant:
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-#
Que signifie cet avertissement? Comment le résoudre?
De la documentation psql :
psql est construit comme une "application console". Comme la console Windows Windows utilise un codage différent de celui du reste du système, vous devez Faire particulièrement attention lorsque vous utilisez des caractères 8 bits dans psql. Si psql Détecte une page de code de console problématique, il vous en avertira au démarrage.
Pour changer la page de code de la console, deux choses sont nécessaires: Définissez la page de code en entrant cmd.exe/c chcp 1252. (1252 est une page de code Appropriée pour l'allemand; remplacez-la. avec votre valeur.) Si vous utilisez Cygwin, vous pouvez placer cette commande dans/etc/profile.
Donc, pour supprimer cet avertissement, vous devez exécuter chcp 1252
avant de saisirpsql
. Utiliser chcp
sans paramètre vous donne la page de code actuelle.
Pour rendre cela encore plus évident, le fichier auquel @ user3423801 ajoute la ligne
cmd.exe /c chcp 1252
se trouve dans le répertoire scripts
où vous avez installé Postgre.
Par exemple, dans mon cas c'est
C:\Program Files\PostgreSQL\9.3\scripts\runpsql.bat
Ou vous pouvez simplement taper cmd.exe /c chcp 1252
dans la fenêtre d'invite de commande.
La page de codes par défaut pour CMD.exe est différente de celle par défaut pour postgres ... Pour changer pour CMD.exe à l'aide de REGISTRY, essayez ceci:
Puis rouvrez CMD.exe
La réponse de dvdgsng est correcte mais avec l'exemple de code, c'est plus évident.
@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%]: "
Ouvrez cmd.exe et exécutez regedit
.
Aller au Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
Nouvelle valeur de chaîne nommée: Autorun
et remplacez la valeur par chcp 1252
Terminé.
Référence: https://stackoverflow.com/a/30100565/8396969
Je ne savais pas comment le configurer pour Cygwin au niveau mondial. Cela semblait fonctionner dans mon script bash
#!/bin/bash
cmd.exe /c chcp 1252 && psql -h myserver.postgres.database.Azure.com -U myuser@prod-au -d mydatabase
Fondamentalement, définissez le codage de votre application console de 8 bits à utf-8.
Pour git bash users , Exécutez la commande chcp.com 1252
avant de lancer postgres
chcp est une commande de console Windows, donc pour l'exécuter sur git bash, vous devrez peut-être ajouter .com
git bash ne peut pas étendre chcp à un exécutable complet, vous devez donc taper la commande complète.
Pour Postgres 11
"AVERTISSEMENT: la page de codes de la console (437) diffère de la page de codes de Windows (1252) Il est possible que les caractères 8 bits ne fonctionnent pas correctement. Voir la page de référence psql " Remarques pour les utilisateurs de Windows "pour plus de détails."
Si vous n'êtes pas administrateur sur votre machine Ajoutez une ligne "chcp 1252" au script pg_env.bat qui se trouve dans le répertoire de base de votre installation Postgres. ' C'est-à-dire " C:\Program Files\PostgreSQL\11 "
Si vous êtes administrateur sur votre machine , Vous pouvez modifier le registre pour qu'il exécute la ligne chaque fois que vous exécutez "cmd.exe" comme indiqué ci-dessus.
Après beaucoup de recherches pour trouver une réponse qui me paraissait logique, j’ai trouvé cette chaîne d’aide d’aide sur le site PostgreSQL qui dit, en gros, d’exécuter chcp 1252
à partir d’une fenêtre de commande ouverte. exécuter mes commandes PostgreSQL sans l'avertissement de code.
REMARQUE: cette modification ne persiste pas. Vous devez donc l'exécuter à chaque fois que vous ouvrez une nouvelle fenêtre de commande dans laquelle vous prévoyez d'utiliser des commandes PostgreSQL.