web-dev-qa-db-fra.com

PostgreSQL: Avertissement: La page de codes de la console (437) diffère de la page de codes Windows (1252).

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?

20
Yousuf Memon

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.

20
dvdgsng

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
5
numbers longer

Ou vous pouvez simplement taper cmd.exe /c chcp 1252 dans la fenêtre d'invite de commande.

3
iusting

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:

  1. Démarrer -> Exécuter -> regedit
  2. Allez dans [HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor]
  3. Ajouter une nouvelle valeur de chaîne nommée "Autorun" avec la valeur "chcp 1252"

Puis rouvrez CMD.exe

2
user3344137

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%]: "
1
user3423801

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

1
Det2sial

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
1
Damien Sawyer

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.

ici

0
You sir

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.

0
M The Developer

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.

0
amraby