TOMCAT: € Eurozeichen via tomcat in einer Javaklasse in ein File schreiben

jeipack

Erfahrenes Mitglied
Hi
Wir schreiben via einer Javaklasse die von Tomcat aus gestartet wird (eine JSP greift auf die Javaklasse zu) eine Datei. In diese Datei wird ein Eurozeichen geschrieben €.
Dies funktioniert grundsätzlich.

Nun haben wir aber eine Tomcat Umgebung bei der das Eurozeichen als Fragezeichen in die Datei geschreiben wird (€ -> ?).

Hat irgendwer eine Idee wieso?

Ich dachte daran, dass der Tomcat selbst unter der falschen Codierung läuft, aber ich habe keine Ahnung wo und ob es so eine Einstellung gibt. URIEncoding, etc wird es ja sicher nicht sein und mit Google bin ich dann auch nicht mehr weiter gekommen.

Hoffe mir kann wer helfen?

Ahja zum System: Windows 2003, Tomcat 6
 
Ich würde erstmal prüfen ob unmittelbar vor dem Schreiben in die Datei das €-Zeichen überhaupt noch vorhanden ist oder schon da nicht mehr stimmt. Falls es da noch intakt ist liegt es am Encoding der Datei selbst.
 
Unmittelbar davor existiert das Eurozeichen noch.

Die Datei ist davor noch nicht vorhanden.

Mit dem selben Code auf einer anderen Umgebung funktioniert es.


Es hat sicher was mit Encoding zu tun. Allerdings habe ich keine Ahnung was.
 
Hmm ... es kommt darauf an WIE du das €-Zeichen in die Datei schreibst. Da Java UTF-8 basiert ist ist das €-Zeichen innerhalb von Java als 2Byte-Zeichen *eben UniCode* gespeichert. Wenn du jetzt aber nur Byte-weise speicherst *über einen normalen FileOutputStream* geht der Zusammenhang verloren und aus einem 2Byte-Zeichen werden zwei 1Byte-Zeichen. Du musst daher das €-Zeichen als UTF-8 Zeichen speichern und als solches auch wieder laden. Das klingt alles kompliziert ... ist aber mit dem richtigen Stream ganz einfach.
 
@SPiKEe: Java ist UTF-16 basiert, kann UTF-8 aber genauso lesen/verarbeiten.

@Thread: Mit welchem Programm wird die Klasse geschrieben? Schau doch mal, ob es da Einstellungen fürs Encoding gibt. Wenn du auf die Datei auch von einem Linux-/Unix-System zugreifen kannst, überprüfe das Encoding mit
Code:
file -i
(und poste den Output), vielleicht gibt es für Windows vergleichbare Programme.
Wenn alle Stricke reißen sollte es immer noch mit der Escape-Sequenz des Euro-Zeichens,
Code:
\u20AC
funktionieren. Dein Problem wäre dann aber nur für diesen einen Fall gelöst und du hast sicher keine Lust, bei jedem Sonderzeichen die Escape-Sequenz zu suchen ;)
 
@genode
bezüglich UTF-16 : man lernt nie aus ... aber das Java auf Unicode basiert wusste ich dann doch noch =D.
 
Zurück