# Windows Umlaute



## FranzFerdinand (24. Nov 2014)

Sagt mal, es gibt da so eine kleine Frage, die belastet mich seit Ewigkeiten in Java. Ich bin Benutzer von fortschrittlichen Betriebssystemen (Ubuntu und OS X 10.10). Ich baue in meine Javaprojekte oft Umlaute ein, allein schon, wenn ich dem Benutzer einen Text in ein JLabel schreibe oder eine Meldung anzeige: "Bitte ändern Sie den Wert".

Wenn ich meine Projekte auf Ubuntu oder am Mac ausführe, dann klappt das auch wunderbar.

Wenn ich das dann auf unseriösen Ramschsystemen wie Windows XP, 7 oder 8 öffne, dann sind erstmal alle Sonderzeichen futsch. Ä, Ö, Ü, ß, é, alles.

Hat jemand einen Ansatz für mich, wie ich global definieren kann, dass es sich um UTF-8 Codierung handelt, sodass auch ein Microschrott System begreift, "aha, da ist ein Umlaut"?

Vielen Dank und schöne Grüße
Lukas


----------



## VfL_Freak (24. Nov 2014)

na na na ..... :noe:

https://www.google.de/search?q=set+...annel=nts&gfe_rd=cr&ei=ahlzVNrbAsig-wbR1oCYCg


----------



## FranzFerdinand (27. Nov 2014)

Ja, ne, wenn ich das nicht schon gegooglet hätte, würde ich ja auch nicht fragen...

Habe bisher keine seriöse Methode gefunden, das mit Windoof kompatibel zu machen.
Ich hab beispielsweise diesen Code probiert:

```
System.setProperty("file.encoding","UTF-8");
    Field charset;
	try {
		charset = Charset.class.getDeclaredField("defaultCharset");
	    charset.setAccessible(true);
	    charset.set(null,null);
	} catch (NoSuchFieldException e) {
		e.printStackTrace();
	} catch (SecurityException e) {
		e.printStackTrace();
	} catch (IllegalArgumentException e) {
		e.printStackTrace();
	} catch (IllegalAccessException e) {
		e.printStackTrace();
	}
```

Da ändert sich rein gar nichts...

Gruß
Lukas


----------



## Joose (27. Nov 2014)

FranzFerdinand hat gesagt.:


> Wenn ich das dann auf unseriösen Ramschsystemen wie Windows XP, 7 oder 8 öffne, dann sind erstmal alle Sonderzeichen futsch. Ä, Ö, Ü, ß, é, alles.



Leider kann ich diese Problem nicht nachvollziehen.
Bei UIs die ich geschrieben habe verwende ich ebenfalls Umlaute. Diese wurden auf allen Windows Rechner bisher immer ohne Probleme angezeigt. (entwickelt wurde ebenfalls auf Windows)

Hast du den Quellecode schon mal unter Windows betrachtet? Wird dieser korrekt angezeigt?

Ansonsten bietet die Ergebnisliste von Vfl_Freak mehrere unterschiedliche Lösungansätze. Da du nicht verraten hast was du schon probiert hast und was nicht geholfen hat ist es schwer zu erraten was man dir vielleicht raten sollte.



FranzFerdinand hat gesagt.:


> sodass auch ein Microschrott System begreift



Man muss hier kein OS als Schrott bezeichnen, das beschwört ja nur wieder einen Glaubenskrieg 
Jedes hat seine Vor- und Nachteile!



FranzFerdinand hat gesagt.:


> ```
> System.setProperty("file.encoding","UTF-8");
> Field charset;
> try {
> ...



Woher hast du dieses Snippet? Was sollte es denn ändern?
Ein Code bringt hier rein gar nichts, wenn müsste vor dem Start des Programms eine Einstellung/ein Argument richtig gesetzt werden.


----------



## Thallius (27. Nov 2014)

Also ich entwickele unter OSX und bei mir sind auch auf Windows automatisch alle Umlaute vorhanden. Du must also wohl etwas extra falsch machen bzw etwas extra umstellen damit es nicht geht.

Welche IDE benutzt du denn? 

Gruß

Claus


----------



## FranzFerdinand (27. Nov 2014)

Hallöle,

ich arbeite mit Eclipse auf OS X Yosemite. Auf Ubuntu und Mint zeigt er alles an und auf nem Windows 7 ist wieder alles weg.

Gruß
Lukas


----------



## nvidia (27. Nov 2014)

Joose hat gesagt.:


> Leider kann ich diese Problem nicht nachvollziehen.
> Bei UIs die ich geschrieben habe verwende ich ebenfalls Umlaute. Diese wurden auf allen Windows Rechner bisher immer ohne Probleme angezeigt. [...]



Wahrscheinlich lässt er es in der Windows-Konsole ausgeben,  dann muss erst ein Unicode-kompatibler Font eingestellt werden. Und für die Eclipse-Console muss man manchmal in der entsprechenden Run Configuration das Encoding umstellen.


----------



## FranzFerdinand (27. Nov 2014)

Hallöle,

das Problem betrifft nicht nur die Konsole, sondern alles.
Auch den Text in den //kommentaren oder wenn ich ein jLabel beschriften lasse, etc. ich hatte gedacht, da gibt es vielleicht irgendeinen Befehl, der Java beibringt das überall richtig darzustellen?

Gruß
Lukas


----------



## Deros (28. Nov 2014)

steht das encoding deiner Entwicklungsumgebung unter Windows auch auf UTF-8? Standard ist doch noch immer CP1521 eingestellt oder nicht?


----------



## arilou (28. Nov 2014)

FranzFerdinand hat gesagt.:


> [...]Auch den Text in den //kommentaren oder wenn ich ein jLabel beschriften lasse, etc. ich hatte gedacht, da gibt es vielleicht irgendeinen Befehl, der Java beibringt das überall richtig darzustellen?


_Java_ verwendet intern immer Unicode-16. Aber die Source-Dateien sind ja nicht "Java", sondern einfache Textdateien. Also _das_ jetzt "Java" ankreiden zu wollen, tztztz...

Allenfalls wäre interessant, ob man javac (explizit) mitteilen kann, in welcher Codepage die Sourcen sind, damit korrekt in .class kompiliert wird.


----------



## FranzFerdinand (28. Nov 2014)

arilou hat gesagt.:


> Allenfalls wäre interessant, ob man javac (explizit) mitteilen kann, in welcher Codepage die Sourcen sind, damit korrekt in .class kompiliert wird.



Das ist das, worauf ich eigentlich hinaus möchte. Ich kenn das teilweise aus anderen Programmiersprachen, dass man da sowas wie "charset=utf-8" in den Header schreibt und der dann weiß, was Sache ist...


----------



## arilou (3. Dez 2014)

javac source file encoding:

```
javac -encoding ISO8859-1
// oder
javac -encoding UTF8
// oder oder oder
```


----------



## FranzFerdinand (3. Dez 2014)

arilou hat gesagt.:


> javac source file encoding:
> 
> ```
> javac -encoding UTF8
> ```



Hm, das sieht mir jetzt nicht so nach einem Befehl nach klassischer Java Syntax aus.
Habe dem Befehl ein wenig gegooglet, aber nichts gefunden, wie ich das irgendwie verstehen kann.
In den Quelltext direkt kann man das in der Form ja nicht quetschen. Das sah mir nach meinen Recherchen irgendwie aus nach einem speziellen Compilerprogramm oder sowas?

Kannst Du die Nutzung bitte ein wenig erläutern?

Vielen Dank!

Gruß
Lukas


----------



## BuddaKaeks (3. Dez 2014)

Dieses "spezielle Compilerprogramm" ist der standard Java Compiler ;(


----------



## dzim (4. Dez 2014)

Autsch. 

@FranzFerdinand: Ich glaube, du bringst hier echt einige Sachen durcheinander - und hast einen gewissen Mangel an Basiswissen.

*javac* ist seit Jahr und Tag _*DER*_ Compiler, der aus .java-Dateien .class-Dateien macht. Die einzigen, die da noch etwas speziell sind, sind die Jungs von Eclipse, die ihren eigenen Compiler haben (gcj u.s.w. zähle ich erst mal nicht dazu).

Zum Encoding: Ich entwickle mit Eclipse auf Ubuntu, meine Kollegen primär aber auf Windows. Das Problem ist, das du mitunter in den Settings deiner IDE (oder des Editors) eben sagen musst, wie er die Dateien interpretieren muss. Mir ist es erst einmal passiert, das eine Property-Datei verhunzt wurde, weil sie auf Win explizit mit ISO-8859-1 erstellt wurden (oder war es cp-1252?). Jedenfalls waren nur wenige Klicks notwendig, um der IDE zu erklären, wie er die interpretieren musste, dann ging alles wieder. Hab danach nur dafür gesorgt, das alle Resource-Files eben immer mit UTF-8 erstell werden, so dass so ein Quark nicht wieder passiert. Ist am Ende kein Schuld von Java, wenn dann von der der IDE oder noch eher vom Anwender. Sorry. Ist aber so.


----------



## pcProfie (8. Dez 2014)

Umlaute und Sonderzeichen in Java

aus "Über sieben wolken laufe ich" wird "\u00dcber sieben wolken laufe ich". das kann man für alle strings so machen auch kommentare etc.. Es ist öfters so, dass wenn man code kopiert aus Ö z.b. &%KFS&% oder son mist entsteht. wenn man unicode nutzt wird das beim ausgeben oa richtig angezeigt.


----------

