Das ist ein Problem der Einstellung deiner Konsole, nicht der Datenbank.
Hallo,
ich bin echt am verzfeilen.
PostgreSQL Server 8.3.6 unter RHEL mit LATIN1
Java Programm in eclipse mit dem JDBC Treiber postgresql-8.3-607.jdbc4.jar.
Ich habe alles probiert, egal was ich mache, eclipse project encoding auf "Cp1252", "ISO-8859-1", "UTF-8". Testweise "props.setProperty("compatible","7.1");" und "props.setProperty("charSet","LATIN1");". Die PSQLException gibt anstelle Umlauten nur ? aus. (Das Passwort gebe ich extra falsch ein)
"FATAL: Passwort-Authentifizierung f?r Benutzer ?test? fehlgeschlagen"
Code:SHOW server_encoding; server_encoding ----------------- LATIN1 (1 Zeile)Code:SHOW client_encoding; client_encoding ----------------- LATIN1 (1 Zeile)Was kann ich noch versuchen?Code:SHOW LC_CTYPE; lc_ctype ---------------- de_DE.iso88591 (1 Zeile)
Gruß
Joshua
Das ist ein Problem der Einstellung deiner Konsole, nicht der Datenbank.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Das wird nicht in der Konsole ausgegeben sondern in der Java GUI. textArea.append(e.getMessage()); Es sind keine richtigen ? eher so Bauklötzchen Fragezeichen: "FATAL: Passwort-Authentifizierung f�r Benutzer �asd� fehlgeschlagen"
Nun, welches Encoding verwendet die Java GUI?
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Ich kann das bestätigen. Auch wenn man die Meldung in ein UTF-8 codiertes Logfile schreibt, gehen die Umlaute verloren.
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'
Die Java GUI benutzt das encoding welches ich im eclipse project einstelle. Aber wie gesagt weder "Cp1252", "ISO-8859-1" oder "UTF-8" funktionieren. Es bleiben Bauklötzchen.
Gehen die verloren? Ein Logfile ist per Definition erst mal eine Datei, die kein Encoding hat.
Was dann später zu sehen ist, hängt davon ab, was das Betriebssystem darstellt.
Sind die Zeichen also im Logfile schon nicht mehr vorhanden? Kann man das mit einem z. B. Hex-Editor bestätigen?
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Mein Logfile hat ein Encoding - ich mache das explizit mit UTF-8 auf.
Genau.Sind die Zeichen also im Logfile schon nicht mehr vorhanden?
Auch das.Kann man das mit einem z. B. Hex-Editor bestätigen?
Mit dem folgenden Program kann man das reproduzieren (vorausgesetzt lc_messages steht auf German):
In der Datei error.log stehen in der ersten Zeile korrekte Umlaute, die Fehlermeldung aus der Exception wird dagegen falsch geschrieben.Code:public static void main(String[] args) throws Exception { PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileOutputStream("error.log"), "UTF-8")); out.println("Hier sind die korrekten Umlaute: öäüÖÄÜß"); Connection con = null; try { con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres", "postgres", "gaga"); } catch (SQLException e) { out.println(e.getMessage()); } finally { if (con != null) con.close(); out.close(); } }
Ich habe verschiedene Varianten von lc_messages in postgresql.conf ausprobiert aber das scheint nichts zu ändern. (auch German_Germany.65001 da 65001 normalerweise in Windows die UTF-8 code page ist)
Ich habe versucht das Logfile (gezipped) hier anzuhängen, aber irgendwie funktioniert der Uploader nicht...
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'
Zwei Punkte, über die ich mich wundere:
Ist das Encoding der Datenbank auch UTF8?
Bauklötzchen sind erst mal ein Problem der Ausgabe, nicht der Inhalte.
Was genau steht denn an der Stelle in der Datei? Kann dein Editor das Encoding verändern? Kannst du sehen, ob das Zeichen in einem anderen Encoding passt?
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Also wenn ich bei mir castorps Code einfüge, die DB ist wie gesagt LATIN1, das eclipse project habe ich auch auf LATIN1 gestellt, und ich nutze new FileOutputStream("error.log"), "LATIN1"). Dann stehe im error.log:
Hier sind die korrekten Umlaute: äöüß
FATAL: Passwort-Authentifizierung f?r Benutzer ?asd? fehlgeschlagen
Also keine Bauklötzchen sondern ?
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen