# jar-Datei stellt Umlaute nicht dar



## Schwammi1000 (24. Nov 2011)

Hallo Leute,

ich habe ein Problem mit Umlauten in meiner Java-Applikation. Ich arbeite mit Netbeans 7.0. Ich lese aus einer Textdatei Daten aus und stelle sie dann in der GUI dar (bspw. in einer JComboBox oder dem JLabel). Wenn ich das Programm von Netbeans aus starte funktioniert das einwandfrei. Wenn ich jedoch die ausführbare jar-Datei ausführe, werden die Zeichen falsch dargestellt. 

Ich hab mir die Textdateien mit einem HexViewer angesehen. Ich glaube das es sich um UTF-8 handelt, da bin ich aber nicht so Sattelfest

So steht es in den Textdateien:
ü...C3 BC
ä...C3 A4
ö...C3 B6
ß...C3 9F

Ich hoffe mir kann jemand helfen.

mfg
Markus


----------



## timbeau (24. Nov 2011)

Achte darauf, dass sämtliche Textdateien mit UTF-8 erstellt und gelesen werden.


----------



## Schwammi1000 (24. Nov 2011)

Kurz nach dem Eröffnen des Themas habe ich dann eine neue Idee gehabt. Ich habe eine gespeicherte Datei von Netbeans angesehen und eine die von der jar-Datei gespeichert wurde. Hier wurde jetzt der Unterschied klar.

Netbeans speichert in UTF-8:
ü...C3 BC etc.

jar-Datei speichert in ISO 8859-15:
ü...FC

Das heißt Netbeans hat die von jar gespeicherten Dateien nicht lesen können und umgekehrt. 
Die eigenen Dateiern konnten jedoch richtig gelesen werden.

Die Lösung des Problems liegt darin, die Enkodierung von Netbeans unter Project-Options-->Source auf ISO 8859-15 zu stellen.

mfg Markus


----------



## HoaX (24. Nov 2011)

Was nur solange hilft, bis jemand dein Programm unter Linux verwendet, da ist nämlich mittlerweile UTF-8 standard.
Mach es lieber so wie Timbeau gesagt hat und lege dich auf ein Encoding fest und verwende dieses explizit beim Lesen und Schreiben.


----------



## HelgeW (24. Nov 2011)

Alternativ kannst Du aber auch einfach die Unicodekodierung eintragen:
Hier einmal eine kleine Auflistung:

  		\u00A0 	  	“Non Breaking Space” – ein erzwungenes Leerzeichen.
& 		\u0026 	& 	Ampersand-Zeichen, kaufmännisches Und.
< 		\u003C 	< 	öffnende spitze Klammer (kleiner)
> 		\u003E 	> 	schließende spitze Klammer (größer).
ä 		\u00E4 	ä 	Umlaut klein: ä
Ä 		\u00C4 	Ä 	Umlaut groß: Ä
ö 		\u00F6 	ö 	Umlaut klein: ö
Ö 		\u00D6 	Ö 	Umlaut groß: Ö
ü 		\u00FC 	ü 	Umlaut klein: ü
Ü 		\u00DC 	Ü 	Umlaut groß: Ü
			\u00DF     ß	sZett
€ 	\u20AC 	€ 	Euro Währungszeichen
$ 		\u0024 	$ 	Dollar Währungszeichen
£ 		\u00A3 	£ 	Pfund Währungszeichen


----------



## Schwammi1000 (24. Nov 2011)

falls ich jetzt mist schreibe tuts mir leid ich bin jetzt schon ein wenig betriebsblind. 

NB war bei mir früher auf UTF-8 eingestellt. Innerhalb von NB hat ja alles geklappt. Dh es wurde alles mit UTF-8 geschrieben (siehe Hexviewerergebnisse). Auf dem WindowsPC hat er das HZeichen dann anders interpretiert, und zwar in ISO 8859-15. Deshalb auch immer zwei Zeichen ausgegeben: C3 + iein anderes für den jeweiligen Umlaut. Wie soll ich es machen, dass meine Javaapplikation von außen das mit UTF-8 interpretiert??

mfg


----------



## timbeau (24. Nov 2011)

Beim Lesen und schreiben kannst du die Kodierung explizit mit angeben. Ich kenn ja deinen Code nicht aber z.B. 


```
FileWriter fw = new FileWriter(new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));
```

sowas im Code nutzen. Sonst wird das Default-Encoding benutzt, das bei Windows eben dieses komische cp1528 ist.


----------

