sun.io.MalformedInputException

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

ich habe eigentlich eine total einfache und triviale Aufgabe. In einer jsp Applikation wird ein TextFile auf den Server hochgeladen, und ich muss diese Datei parsen.
in meiner java Klasse habe ich die datei (FormFile file) , die ich mit:
Code:
br01 = new BufferedReader(new InputStreamReader(file.getInputStream()
while ((line = br01.readLine()) != null) { 
 ......
lese.
das hat wunderbar funktioniert, bis die Server auf SunSolaris (produktivLandschaft) bzw. Linux (Quality) umgezogen sind. Jetzt bekomme ich eine sun.io.MalformedInputException sobald in der Datei irgendwelche Sonderzeichen sind. Da die Applikation weltweit genutzt wird, sind da recht oft sonderzeichen. jetzt habe ich rausgefunden, dass Java davon ausgeht, dass die Datei mit UTF8 kodiert ist, da im HTML Header steht:

Code:
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
das kann ich aber nicht rausnehmen, sonst werden die chinesischen und anderen zeichen nicht richtig dargestellt.

schreibe ich die Datei in UTF8, so kann ich sie sowohl auf Windows, linux und solaris parsen. Leider habe ich keine Möglichkeit die Anwender dazu bringen die Dateien in UTF8 zu kodieren.

Die Frage ist;
- kann ich irgendwie erkennen, wie die Datei kodiert ist ?
- Kann ich irgendwie die Exception umgehen ?
- kennt jemand einen Tutorial, in dem DateiUpload mit jsp beschrieben ist ?

Danke für Unterstützung
 

Murray

Top Contributor
Erkennen kann man das Encoding nicht. Man kann die Exception solange vermeiden, wie man die Datei eben nicht unter Verwendung irgendeines Encodings zu interpretieren versucht. Man kann die Datei z.B. mit einem BufferedReader komplett in eine byte[] einlesen; dabei wird kein Encoding verwendet und daher tritt auch keine Exception auf. Man könnte jetzt verschiedene Encodings ausprobieren und dann hoffentlich eines finden, bei dem es zu keiner Exception kommt - aber ob das auch dasjenige ist, welches beim Absender der Datei verwendet worden ist, steht auf einem anderen Blatt. Im schlimmsten Fall wird der Text also falsch interpretiert.
 
G

Guest

Gast
Hi,

zuerst Danke für die Antwort, auch wenn mich das nicht weiterbringt.

Es muss doch irgendwie möglich sein, eine textdatei hochzuladen und zu verarbeiten. Solange die j2ee auf windows lief, war das auch kein problem. In asp oder php (unabhängig vom betriebssystem) funktioniert das auch ohne probleme.

Vielleicht kennt jemand einen Tutorial, wo fileUpload behandelt wird, alles was ich finden konnte, waren oberflächliche Beispiele, ohne dass die Problematik "sonderzeichen" anzusprechen.
 

Murray

Top Contributor
Anonymous hat gesagt.:
Es muss doch irgendwie möglich sein, eine textdatei hochzuladen und zu verarbeiten. Solange die j2ee auf windows lief, war das auch kein problem. In asp oder php (unabhängig vom betriebssystem) funktioniert das auch ohne probleme.
Es würde mich wundern, wenn das in irgendeiner Programmiersprache problemlos möglich wäre. Das Problem ist doch, dass zur korrekten Interpretation einer Textdatei das Wissen um das verwendete Encoding notwendig ist. Und diese Information steckt eben nicht explizit in der Datei.
 
Status
Nicht offen für weitere Antworten.

Oben