Hallo,
eine Textdatei mit Str8ts-Aufgaben soll mit readLine() zeilenweise eingelesen und ausgewertet werden. In jeder Zeile ist eine Aufgabe und jede Aufgabe hat genau 162 Zeichen. Das funktioniert alles einwandfrei, ausgenommen die erste Zeile. Sie macht Probleme wenn die Textdatei in UTF kodiert ist. Bei UTF-8 wird beispielsweise die Byte-Sequenz EF BB BF vorangestellt.
Wenn nun mit if (zeile.length() == 162) geprüft wird, ob es sich hinsichtlich der Länge um eine Str8ts-Aufgabe handelt, dann fällt natürlich die erste Zeile unter den Tisch, wenn die Datei UTF kodiert ist. Sie hat ja 165 anstatt 162 Zeichen, was dem Ersteller der Datei nicht unbedingt bekannt sein muss.
Man könnte natürlich die erste Zeile anders behandeln als den Rest der Datei. Das Problem ist nur, dass die Byte-Sequenz nicht immer gleich ist. Nicht einmal die Länge ist immer gleich.
Gibt es eine Möglichkeit, dieses Problem mit der BOM elegant zu umgehen?
MfG, kodela
eine Textdatei mit Str8ts-Aufgaben soll mit readLine() zeilenweise eingelesen und ausgewertet werden. In jeder Zeile ist eine Aufgabe und jede Aufgabe hat genau 162 Zeichen. Das funktioniert alles einwandfrei, ausgenommen die erste Zeile. Sie macht Probleme wenn die Textdatei in UTF kodiert ist. Bei UTF-8 wird beispielsweise die Byte-Sequenz EF BB BF vorangestellt.
Wenn nun mit if (zeile.length() == 162) geprüft wird, ob es sich hinsichtlich der Länge um eine Str8ts-Aufgabe handelt, dann fällt natürlich die erste Zeile unter den Tisch, wenn die Datei UTF kodiert ist. Sie hat ja 165 anstatt 162 Zeichen, was dem Ersteller der Datei nicht unbedingt bekannt sein muss.
Man könnte natürlich die erste Zeile anders behandeln als den Rest der Datei. Das Problem ist nur, dass die Byte-Sequenz nicht immer gleich ist. Nicht einmal die Länge ist immer gleich.
Gibt es eine Möglichkeit, dieses Problem mit der BOM elegant zu umgehen?
MfG, kodela