# Leerzeichen nach Umlaut -> Sichtbar erst nach Query!



## BJ (18. Jun 2015)

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:


```
...
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?


----------



## 127.0.0.1 (18. Jun 2015)

Hi,

zwei Ansätze:
Schau dir mal den Post an:
http://www.java-forum.org/allgemeine-java-themen/123660-problem-arraylist-string-umlauten.html
Da steht ganz unten als Lösung:


> Das Problem lag wirklich an dem manuellen erstellen der Tabelle. Nachdem ich ein SQL-Script geschrieben habe und meine aktuelle Tabelle ersetzt habe, wirds richtig ausgelesen.



Oder du probierst est mal mit einem 'set client_encoding=...' in deinem Statement....

Gruß


----------



## BJ (18. Jun 2015)

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...


----------



## 127.0.0.1 (18. Jun 2015)

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


----------



## Tom299 (18. Jun 2015)

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.


----------



## BJ (19. Jun 2015)

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...


----------



## Tom299 (19. Jun 2015)

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 ;-)


----------

