Android EditText zeigt keine Umlaute

Player2000

Mitglied
Hallo zusammen :)

Ich lade einen Text aus einem File, dessen Umlaute, wenn ich ihn in einem EditText anzeige, falsch angezeigt werden (so ein Viereck mit Fragezeichen drin). ???:L
Weiß jemand wie ich das Problem lösen kann? :bahnhof:

Freundliche Grüsse
Stefan
 

Tecwan

Aktives Mitglied
Wenn Sonderzeichen (wozu oft auch die Umlaute und das ß gehören) nicht angezeigt werden können,
liegt das an unterschiedlichen Codierungen der Zeichen; zeichen jenseits 0-9 und a-Z benötigen häufig
2 und mehr Bytes, deren Bedeutung zwar genormt ist, aber eben nicht in jeder Norm gleich.
Folge: es kommt zu nicht sinnvoll interpretierbaren Zeichen, die dann einfach mit der
Fragezeichen-Raute angezeigt werden.

Am günstigsten ist es, als Zeichensatz immer UTF-8 zu benutzen. Leider wird oft vergessen, das
explizit anzugeben. Ist auf den beteiligten Rechnern dann ein unterschiedliches Charset verwendet
worden, gibt es diesen ärgerlichen Datenmüll.

Hier mal zwei Funktionen, mit denen man an den Codierungen schrauben kann:

Java:
String text = ...

byte[] byteArray = text.getBytes("UTF-8");
String utfText = new String( byteArray, "UTF-8" );
 

Player2000

Mitglied
Ich benutze bereits UTF-8, die Frage ist, ob das File das geladen wird auch in UTF-8 ist, kann man das irgendwie abfragen?

Hier ist noch der Code der betroffenen Methode:
Java:
private String getText(File f) {
	FileReader fr;
	try {
           fr = new FileReader(f);
           // fr.getEncoding() returns "UTF-8"
	} catch (FileNotFoundException e) {
		return null;
	}
	String content = "";
	int c;
	try {
		while ((c = fr.read()) != -1)
			content += (char) i;
	} catch (IOException e) {
		return null;
	}
	try {
		fr.close();
	} catch (IOException e) {}
	return content;
}
 
Zuletzt bearbeitet:

Tecwan

Aktives Mitglied
Kommt auf die Quelle des Textfiles an.
Manche Dokumente haben Meta-Informationen, da ist das Format angegeben. Aber vermutlich eher nicht.
Häufig erraten Editor-Programme anhand der vorkommenden Sonderzeichensequenzen nur, welche Codierung
da verwendet wurde, und wandeln diese in ihr Codierschema um. So etwas müsstest du dann auch machen.

Wenn die Quelle immer die gleiche ist, lässt sich das zum Glück ja ziemlich schnell durch Probieren mit einem
Testtext feststellen und entsprechend durch Angabe der Formate umwandeln.
 

Tecwan

Aktives Mitglied
Was häufig hilft, wenn ein File mit Sonderzeichen von einem Windows-PC stammt, das offenbar nicht UTF-8 codiert ist:

Java:
try {
    InputStream is = this.getAssets().open("data.txt");    // z.B aus dem App-internen Ordner assets
    BufferedReader br = new BufferedReader(new InputStreamReader(is,"windows-1252"));
    String zeile;
    while ( (zeile = br.readLine()) != null ) {
        // irgendwas mit zeile anstellen
    }
} catch (IOException e) { e.printStackTrace(); }

Zu Zeile 2: Eclipse speichert unter Windows im Cp-1252-Format, wenn man nicht zu Beginn der
Eingabe etwas anderes (z.B. UTF-8) vorgegeben hat. Benutzt man ein solches File, erhält man
dann für die Sonderzeichen die Rauten mit Fragezeichen in der Ausgabe, sofern man nicht angibt,
dass die Daten in Cp1252 vorliegen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Besset Android Edittext onTextChange endlosschleife Android & Cross-Platform Mobile Apps 2
A Mehrere EditText-Komponenten sollen zusammenarbeiten Android & Cross-Platform Mobile Apps 2
B Absturz der App bei leeren Edittext Android & Cross-Platform Mobile Apps 14
S Android Absoluter Neuling: EditText zur Laufzeit verändern bzw. über Button Android & Cross-Platform Mobile Apps 2
M Android Edittext width passend zum Text Android & Cross-Platform Mobile Apps 1
S Dynamische EditText View eingaben in Datenbank speichern Android & Cross-Platform Mobile Apps 0
D Android EditText und TextView haben unterschiedliche größen innerhalb einer TableRow Android & Cross-Platform Mobile Apps 18
C EditText Android & Cross-Platform Mobile Apps 1
N Android EditText.setError() funktioniert nicht nach Rotation Android & Cross-Platform Mobile Apps 1
N Android EditText: Numpad statt Tastatur einblenden Android & Cross-Platform Mobile Apps 2
P EditText mehrere Zeilen - verschiedene Farbe Android & Cross-Platform Mobile Apps 3
J ArrayAdapter zeigt Liste nicht an Android & Cross-Platform Mobile Apps 0
J ImageView zeigt kein Bild an, Andere Elemente jedoch sichtbar Android & Cross-Platform Mobile Apps 3
S IF Anweisung zeigt Fehler trotz richtiger Eingabe? Android & Cross-Platform Mobile Apps 7
N Android Liste zeigt Spalten falsch an Android & Cross-Platform Mobile Apps 2
N XY-Plottet keine Daten obwohl Funktion ausgeführt wird Android & Cross-Platform Mobile Apps 4
N XY-Plot plottet keine Daten Android & Cross-Platform Mobile Apps 0
W Android Wieso kann ich keine ListView mehr zum Layout hinzufügen? Android & Cross-Platform Mobile Apps 1
W Android Kann keine ListView mehr in der MainActivtiy anzeigen, obwohl noch sehr viel Platz frei ist Android & Cross-Platform Mobile Apps 1
Dimax Android WebVieClient sendet keine Formulare Android & Cross-Platform Mobile Apps 1
J OnRatingBarChangeListener gibt keine Reaktion Android & Cross-Platform Mobile Apps 3
S Android kriege einfach keine HTTP Connection hin Android & Cross-Platform Mobile Apps 1
P Android JUnit Testprojekt warum keine Java Klassen Android & Cross-Platform Mobile Apps 1
A Wieso keine java - forum app Android & Cross-Platform Mobile Apps 4
S Android Eclipse erstellt keine main Activity Android & Cross-Platform Mobile Apps 4
K Android SQLite Query "WHERE _id in (X, Y, Z)" keine Daten Android & Cross-Platform Mobile Apps 6
G keine TextView-Aktualisierung in der while-Schleife Android & Cross-Platform Mobile Apps 18

Ähnliche Java Themen

Neue Themen


Oben