Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: JDBC: PSQLException Encoding

  1. #1
    Magnus ist offline Neuer Benutzer
    Registriert seit
    23.09.2011
    Beiträge
    8

    Standard JDBC: PSQLException Encoding

    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)
    Code:
    SHOW LC_CTYPE;
        lc_ctype
    ----------------
     de_DE.iso88591
    (1 Zeile)
    Was kann ich noch versuchen?

    Gruß
    Joshua

  2. #2
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    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

  3. #3
    Magnus ist offline Neuer Benutzer
    Registriert seit
    23.09.2011
    Beiträge
    8

    Standard

    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"

  4. #4
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    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

  5. #5
    castorp ist offline Erfahrener Benutzer
    Registriert seit
    27.06.2009
    Beiträge
    525

    Standard

    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?'

  6. #6
    Magnus ist offline Neuer Benutzer
    Registriert seit
    23.09.2011
    Beiträge
    8

    Standard

    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.

  7. #7
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    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

  8. #8
    castorp ist offline Erfahrener Benutzer
    Registriert seit
    27.06.2009
    Beiträge
    525

    Standard

    Zitat Zitat von ads Beitrag anzeigen
    Ein Logfile ist per Definition erst mal eine Datei, die kein Encoding hat.
    Mein Logfile hat ein Encoding - ich mache das explizit mit UTF-8 auf.

    Sind die Zeichen also im Logfile schon nicht mehr vorhanden?
    Genau.

    Kann man das mit einem z. B. Hex-Editor bestätigen?
    Auch das.

    Mit dem folgenden Program kann man das reproduzieren (vorausgesetzt lc_messages steht auf German):
    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();
        }
    }
    In der Datei error.log stehen in der ersten Zeile korrekte Umlaute, die Fehlermeldung aus der Exception wird dagegen falsch geschrieben.
    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?'

  9. #9
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    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

  10. #10
    Magnus ist offline Neuer Benutzer
    Registriert seit
    23.09.2011
    Beiträge
    8

    Standard

    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 ?

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 22.12.2011, 08:57
  2. postgresql 8.4.5 encoding
    Von angua im Forum Konfiguration
    Antworten: 1
    Letzter Beitrag: 04.02.2011, 11:52
  3. Npgsql 2.0.9 Encoding
    Von SIJ im Forum externe Schnittstellen
    Antworten: 7
    Letzter Beitrag: 11.06.2010, 19:15
  4. psql Konsole & Encoding
    Von Nuadu im Forum Sonstige
    Antworten: 3
    Letzter Beitrag: 02.09.2009, 08:32
  5. Problem Encoding mit Postgres 8.4.0
    Von mkuis im Forum Konfiguration
    Antworten: 7
    Letzter Beitrag: 21.08.2009, 16:28

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum