Ungewöhnliches Formatproblem

Status
Nicht offen für weitere Antworten.

perco

Mitglied
Hallo,

also ich hab folgende Lage. Mit Hilfe eines Konverter-Servlets erzeuge ich Dateien auf einem Server, die ich mittels OutputstreamWriter mit UTF-8 kodiere. Anschließend lese ich diese Dateien per InputStreamReader(file,"UTF-8") wieder aus und gebe den Inhalt einmal in einem Textfeld und einmal in einer Datei aus, die heruntergeladen werden kann. Dabei verweise ich nciht direkt auf die File auf dem Server, sondern erzeuge "on-the-fly" eine neue Datei zum herunterladen:

Code:
FileInputStream fis = new FileInputStream(file);
BufferedReader br = new BufferedReader(new InputStreamReader(fis,"UTF-8"));
						
response.setContentType("text/xml; Charset=UTF-8");
response.setHeader("Content-Disposition", "attachement; filename=semanticweb.rss");

String line;
while((line = br.readLine())!=null) {
	out.println(line);
}
br.close();

Die Datei die ich runterlade kann ich mit HIlfe eines Editor (Dreamweaver) öffnen, dort wird auch rechts unten angegeben, dass die Datei Unicode (UTF-8) kodiert ist. Zudem werden alle Umlaute usw. korrekt angezeigt.

Wenn ich jetzt allerdings diese Datei auf einen Webhost lade und dann öffnen will habe ich zwei Probleme:
1. die Umlaute/Sonderzeichen von Unicode werden nicht korrekt angezeigt
2. wenn ich z.B. mit dem Validator vom W3c The W3C Markup Validation Service die hochgeladene Datei überprüfen möchte, sagt mir der Validator dass es nicht um eine korrekte XML File handelt und die Kodierung nicht erkannt werden konnte. Wenn ich allerdings den Inhalt der File direkt in das Validator Textfeld (Direct-Input) kopiere, dann funktioniert es.

Ich wäre euch sehr dankbar, wenn ihr mir sagen könntet, wo genau ich den Fehler mache und was falsch ist.

VIelen Dank und beste Grüße!
 

perco

Mitglied
Das Encoding sollte im XML Header angegeben werden, den Rest hat dann der Parser zu besorgen.

Hallo,

ich verstehe noch nicht genau, was du meinst. Soll innerhalb der XML-Datei (die ich dann auf den WEbhost lade) in der erste Zeile: <?xml version="1.0" encoding="UTF-8"?> stehen?

Wenn ich das tue, ist das Problem allerdings immernoch nicht behoben.

Wenn ich die Datei mit Servlet streame, sodass sie runtergeladen werden kann, dann erzeuge ich folgenden Header:
Code:
response.setHeader("Content-Disposition", "attachement; filename=semanticweb.rss");
response.setHeader("Content-Type", "text/xml; Charset=UTF-8");

Aber das Problem ist wie gesagt noch nicht gelöst.

Grüße
 

Wildcard

Top Contributor
Ja, genau das soll da stehen.
Code:
<?xml version="1.0" encoding="UTF-8"?>
Danach liegt es im Prinzip beim Parser.
Die Datei die ich runterlade kann ich mit HIlfe eines Editor (Dreamweaver) öffnen, dort wird auch rechts unten angegeben, dass die Datei Unicode (UTF-8) kodiert ist. Zudem werden alle Umlaute usw. korrekt angezeigt.

Wenn ich jetzt allerdings diese Datei auf einen Webhost lade und dann öffnen will habe ich zwei Probleme:
1. die Umlaute/Sonderzeichen von Unicode werden nicht korrekt angezeigt
Mach mal einen binärvergleich beider Dateien, vielleicht hat dein Programm das du zu hochladen verwendest das Encoding umgeschossen
 

perco

Mitglied
Ich habe die File zuerst mit FileZilla hochgeladen und jetzt habe ich es mit Dreamweaver probiert. Dabei sollten eigentlich keine Probleme auftauchen oder?

Mit welchem Programm kann ich denn einen solchen Binärvergleich am besten durchführen?

Ich habe mal versucht beim The W3C Markup Validation Service die rss Datei direkt hochzuladen. Wenn ich es dann parse sagt er mir, dass der Content-Type meiner File application/x-download ist und er sie deshalb nicht parsen könne.

Warum ist der Content-Type allerdings derart und nicht text/xml, so wie ich es im Servlet angegeben habe?
 

Wildcard

Top Contributor
Ich habe die File zuerst mit FileZilla hochgeladen und jetzt habe ich es mit Dreamweaver probiert. Dabei sollten eigentlich keine Probleme auftauchen oder?
Würde ich so nicht sagen. Woher soll FillZilla wissen um welches Encoding es sich handelt.
Da du FilleZilla sagst, würde ich mal auf FTP tippen? Übertrage die Datei am besten im Binär Modus.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben