Zeilenumbruch wird als Rechteck angezeigt

D

DalvikCoder

Neues Mitglied
0
Hi Leute,

ich habe ein Problem. Ich habe es mittlerweile hinbekommen. Textdateien im Assets-Ordner mitzugeben und den Text auszulesen.
Funktioniert alles ganz gut, auch obwohl es ein Sonderzeichensatz ist ISO-8859-2.

Was mich aber stört und wo ich dran scheitere ist der Zeilenumbruch. Die Entertaste bzw. der Zeilenumbruch in der normalen Textdatei wird im EditText-View als Rechteck dargestellt, aber der Zeilenumbruch funktioniert auch. Nur sieht das Rechteck am Ende echt Sch..... aus.

Kennt einer von euch das Problem bzw. eine Lösung dafür?

Danke im voraus

Gruß
Murat
 
Würde ja gerne helfen, aber dazu bedarf es schon einiger Informationen: Was ist das für eine Datei, wer schreibt sie und womit, was ist dein Quellcode etc.

Gruß
Chris
 
Es ist eine ganz normale Textdatei die ich lesend öffne mit folgendem Code
Wobei wir einfach mal auf auf die Trys und Exception nicht achten bzw. auf die Struktur. Ist nur so ein erster Wurf :)

Danke im voraus


Code:
[SIZE=2][LEFT]String[] [U]files[/U] = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]null[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]; 

AssetManager assetManager = getAssets();

InputStream inputStream = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]null[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]; 
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]try[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] { 
inputStream = assetManager.open([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"001.txt"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2],2); 
} 
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]catch[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (IOException e) { 
Log.[I]e[/I]([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"tag"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2], e.getMessage()); 
} 
String s;
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]try[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] {
s = readTextFile(inputStream);
[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]secondField[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = (EditText) findViewById(R.id.[/SIZE][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]EditText01[/I][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]);
[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]secondField[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].setText(s); 
} [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]catch[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (UnsupportedEncodingException e) {
[/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]// [/COLOR][/SIZE][/COLOR][/SIZE][B][SIZE=2][COLOR=#7f9fbf][SIZE=2][COLOR=#7f9fbf]TODO[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f] Auto-generated catch block[/LEFT]
[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][LEFT]e.printStackTrace();
} 
}

[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]private[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] String readTextFile(InputStream inputStream) [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]throws[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] UnsupportedEncodingException { 
ByteArrayOutputStream outputStream = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] ByteArrayOutputStream(); 
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]byte[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] buf[] = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]byte[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][8192]; 
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]int[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] len; 


[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]try[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] { 
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]while[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] ((len = inputStream.read(buf)) != -1) { 
outputStream.write(buf, 0, len);

} 
outputStream.close(); 
inputStream.close(); 
} 
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]catch[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] (IOException e) { 
} 
String str = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] String(buf, [/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"iso-8859-9"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]); [/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]// for UTF8 encoding [/LEFT]
[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][LEFT]str.replace([/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]". "[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2], [/SIZE][SIZE=2][COLOR=#2a00ff][SIZE=2][COLOR=#2a00ff]"\n"[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]);
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]return[/B][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] str.toString(); [/LEFT]
} 
[/SIZE]
 
In welcher Zeichenkodierung liegt die Textdatei vor?

Der gängige Weg eine Datei bestimmter Codierung einzulesen ist dieser:

Code:
InputStream reader = new InputStreamReader(new FileInputStream(filename),”UTF-8″);
BufferedReader br = new BufferedReader(reader)); String line = null;
 while((line= br.readLine())!=null)
...
 
Zuletzt bearbeitet:
Das erkenne ich nirgends. Sie beinhaltet aber verschiedene Sonderzeichen aus der türkischen Sprache z.B. â oder î
Mit der normalen Codierung wurde mir kompletter Blödsinn angezeigt mit der iso-8859-9 zeigt er mir wenigstens die Zeichen richtig an.
 
Dann verwende den Zeichensatz doch mal in meinem angegebenen Beispiel. Eine weitere Empfehlung wäre die Datei mit JEdit zu öffnen und herauszufinden, in welchem Zeichensatz sie codiert ist. Wenn JEdit es nicht selbst erkennt, kannst du dort die Codierung manuell wechseln und findest es so vielleicht heraus.
 
  • Danke
Reaktionen: DalvikCoder
Das war ein Supertip mit dem JEdit. Die Codierung war soweit in Ordnung, nur war der Zeilenumbruch bzw. der Lineseperator falsch. Eingestellt war Zu finden unter --> Utilities --> Buffer Options.

Drin stand Dos/ Windows (\r\n) und richtig geht es mit Unix (\n). Ich vermute das \r war das Rechteck, was zu viel war. Der Zeilenumbruch hatte ja funktioniert nur war das Rechteck zuviel-

Cooles Tool. Danke!

Gruß
Murat
 

Ähnliche Themen

R
  • raller
Antworten
15
Aufrufe
505
DOT2010
DOT2010
S
Antworten
4
Aufrufe
955
Sempervivum
S
F
  • Fischi84
Antworten
2
Aufrufe
1.897
Fischi84
F
Zurück
Oben Unten