psql Konsole & Encoding

Hallo zusammen,

ich hätte mal eine Frage zu psql.
Wenn ich mich über die psql an meine Datenbank anmelde erscheint folgende Meldung:

Warnung: Konsolencodeseite (850) unterscheidet sich von der Windows-
         Codeseite (1252). 8-Bit-Zeichen funktionieren möglicherweise nicht
         richtig. Einzelheiten finden Sie auf der psql-Handbuchseite unter
         »Notes for Windows users«.
Geben Sie »help« für Hilfe ein.

Selbstverstänlich habe ich im psql Handbuch nachgesehen.

Der Befehl cmd.exe /c chcp 1252 lässt sich auch außerhalb von psql ausführen. Der Befehl wird auch bestätigt und angenommen.
Bei dem nächsten öffnen der psql Konsole erscheint aber wieder die gleiche
Meldung wie oben aufgelistet.

Hat jemand eine Idee oder hatte das gleiche Problem?

Die Fakten:
Betriebssystem: Windows XP
PostgreSQL: 8.4
psql: 8.4.0
Eintrag in der postgresql.conf ‘client_encoding’: UTF8



Vielen Dank

chcp gilt nur für die aktuelle “Session” in der Konsole, wenn die Konsole geschlossen wird, dann geht diese Einstellung verloren.

Am besten machst Du Dir eine Batchdatei in der Du zuerst chcp aufrufst und dann psql:

@echo off
chcp 1252 
c:\Programme\PostgreSQL\8.4\bin\psql.exe %*

den Pfad zu psql musst du natürlich an Dein System anpassen.

Hallo,

danke für die schnelle antwort.
Die Idee mit der *.bat Datei kam mir gestern Abend auch.

Unter C:\Programme\PostgreSQL\8.4\scripts
befindet sich schon eine *.bat Datei, welche psql startet.
Ich habe an die serste Stelle chcp 1252 geschrieben.__Bei der Anmeldung erscheint nun keine Meldung, da dachte ich das Problem sei beseitigt.

Wenn ich aber folgenden Befehl eingebe


CREATE TYPE farben_type AS ENUM ('grün', 'blau',);

Erscheint mal wieder die Fehlermeldung das die Kodierung nicht in ordnung sei und verweist auf den Eintrag in der Konfig-Datei client_encoding.
In dieser steht aber UTF8.

Ja, gut. Wenn dein Client eine 8-bittige Schriftart verwendet, darfst du auf der Clientseite nicht UTF8 einstellen. Du musst also auch die 1252 als “client_encoding” angeben.