Leerzeichen nach Umlaut -> Sichtbar erst nach Query!

BJ

Mitglied
Hallo!

Ich ziehe über eine JDBC - Verbindung aus einer SQLite Datenbank einfache Strings.
Diese Enthalten Umlaute. (ä,ü)
Nachdem ich die Strings in eine ArrayList ziehe, entsteht NUR bei ü jeweils ein Leerzeichen im Anschluss.

Beispiel:

"Prüfprozess" -> "Prüf prozess"

Die SQLite Datenbank ist auf UTF-8 eingestellt, wie auch Netbeans. Und die Strings dort enthalten ALLE keine Leerzeichen.

Code:

Code:
...
Statement stmt = c.createStatement(); 
         
            ResultSet rs = stmt.executeQuery("SELECT * FROM myDB"); 
            
            
            while (rs.next()) { 
               myObject bk = new myObject();
                bk.setProzess(rs.getString("Prozess"); //ab hier existiert bereits das Leerzeichen nach einem ü

                
            } 

...

System.out.println(rs.getString("Prozess")) liefert bereits das Leerzeichen im String. Es muss also zwischen dem Zelleninhalt der Tabelle und dem Query passieren..

Woher kann das Leerzeichen im String kommen?
 
Zuletzt bearbeitet:
Danke für den Hinweis.
Es handelt sich auf jeden Fall um ein Problem in der SQLite Datenbank.
Ich habe eine Zelle mit dem SQLite Database Browser geöffnet und den String einmal als Text angezeigt: Prüfprozess
und einmal als Binary: hier erscheint dann in der Textvorschau, neben dem Hexcode, statt dem ü eine Anzahl von Punkten.
Anscheindend liegen hier versteckte sonderzeichen vor.Anhang anzeigen 7902

Weder die UTF Angabe in den Properties des ConnectionManagers, noch eine wiederholte manuelle Eingabe bringt den Erfolg...
 
Hast du beim Erstellen deiner Tabelle auch wirklich darauf geachtet dass die Einträge autoincrement, varchar(64) und charset utf8 sind?
Und bitte kontrolliere nochmal ob Client und Datenbank beide mit UTF-8 codieren
 
Kannst du mal in der DB aus dem ü ein ä machen und testen, ob das Leerzeichen dann weg ist? Und wenn ja, wieder aus dem ä ein ü machen und wieder testen? Vielleicht gibts ein unsichtbares Zeichen hinter dem ü? Oder es liegt wirklich am ü selbst, das würde der Test ja dann zumindest mal vermuten lassen.
 
Habe jetzt die Daten in ein CSV File exportiert. (Bei SQLite gibt es nur den Datentyp Text, kein Varchar)
Das CSV File mit Notepad++ solange von ANSI nach UTF-8 umgewandelt, bis ich keinen Unterschied in den Sonderzeichen mehr hatte.
Anscheinend lag nur beim ü und auch nur in einem bestimmten Datensatz ein Fehler vor!
Bei kleinen Datenmengen geht das ja. Bei großen... viel Spass!

Wenn ein Fehler vorliegt, wird er nur sichtbar, wenn man mit Notepad++ von ANSI auf UTF-8 umstellt und mit der (Strg-F) Funktion nach dem Umlaut sucht. Die Suchfunktion zeigt dann in der Fehlerzeile KEINEN Fund für z.B. ein ü an, obwohl dieses optisch vorhanden ist. Ein Geist praktisch...
 
Zuletzt bearbeitet:
Ja, das umstellen auf UTF-8 kann nervig sein, hatte mein Eclipse vergessen auf UTF-8 umzustellen und durfte dann auch alle Sonderzeichen im Projekt suchen und neu schreiben ;-)
 

Zurück
Oben