# Unicode-Problem: Griechische Buchstaben



## Pida (13. Dez 2008)

Hallo zusammen, 

ich versuche, griechische Texte in eine externe Datei zu schreiben

```
fw = new FileWriter(newFile); 
bw = new BufferedWriter(fw); 
bw.write("α");
bw.close();
```

Mein Problem: Das Resultat sieht nicht so aus, wie es sollte. Statt "α" steht dort beispielsweise "Î±". Auch in der Konsole (Win XP) wird alles falsch ausgegeben.

Ich habe es auch mit Groovy probiert und dort für jeden Schreibvorgang explizit UTF-8 als Encoding angegeben - ohne Erfolge.
Auch das Ersetzen der griechischen Buchstaben durch echten 'Uni-Code' nach dem Muster '\u1234' bringt nichts.

Was mache ich falsch?

Danke
Pida


----------



## mahe (13. Dez 2008)

Die Windows-Konsole kann sowieso kein UTF-8.
Wenn Du die Dateien öffnest musst das Programm die Kodierung auch richtig erkennen und als UTF-8 öffnen.
Wenn Du z.B. Notepad++ verwendest kannst Du das auswählen, sollte es falsch erkannt werden.


----------



## Pida (14. Dez 2008)

Danke, ich bin jetzt einen Schritt weiter. Es lag teilweise am Editor, jetzt hänge ich aber hier:

Es funktioniert, wenn ich einen Buchstaben wie "α" direkt schreibe. Es funktioniert aber nicht (Problem wie oben beschrieben), wenn ich Buchstaben in einer Variable ersetzen will:


```
newLine = oldLine.replace("a", "α")  // Ausgabe von newLine klappt jeweils nicht
newLine = oldLine.replaceAll("a", "α")
```

Was nun?

Gruß
Pida


----------



## Wildcard (14. Dez 2008)

Du musst beim Writer das Encoding vorgeben und anschließend die Datei auch als UTF-8 in einem UTF-8 fähigen Editor öffnen


----------



## Pida (14. Dez 2008)

Danke, aber s.o.: Leider liegt mein Problem *nicht* beim Writer.

Ich kann einen griechischen Buchstaben direkt ausgeben, das Problem tritt nur beim Ersetzen der lateinischen Buchstaben auf.

Gruß
Pida


----------



## Wildcard (14. Dez 2008)

Vielleicht sind einfach deine Quelldateien im falschen Encoding.


----------



## Pida (15. Dez 2008)

Wildcard hat gesagt.:
			
		

> Vielleicht sind einfach deine Quelldateien im falschen Encoding.


Leider nicht: Es funktioniert auch nicht, wenn 'Unicode' oder 'UTF-8' als Encoding für die Quelldatei angegeben sind.

Gruß
Pida


----------



## Pida (15. Dez 2008)

Problem gelöst: Der FileWriter ist schuld (und wird vermutlich auch von Groovy aufgerufen, weshalb es damit auch nicht ohne Umweg ging):

http://www.malcolmhardie.com/weblogs/angus/2004/10/23/java-filewriter-xml-and-utf-8/

Danke nochmal
Pida


----------



## Gast (15. Dez 2008)

Naja, wenn ich drüber nachdenke, kann das keine vollständige erklärung sein. Aber es funktioniert...


----------



## Pida (15. Dez 2008)

Und wieder ein Schritt zurück: Das Problem ist doch noch nicht gelöst.

Folgendes Szenario: 
1. Ich nehme meinen Input (Dateien von ca. 1 MB) und lasse das Programm laufen -> murks
2. Ich schreibe von Hand noch ein paar Wörter davor -> murks
3. Ich lösche den Inhalt der Datei, schreibe die gleichen Wörter rein wie in 2 -> problemlose Anzeige

Was läuft falsch?

Danke
Pida


----------



## Ark (15. Dez 2008)

Ich vermute mal, es wird ein anderer Zeichensatz zum Speichern als zum Lesen verwendet.

Ark


----------



## Pida (15. Dez 2008)

@Ark: Was würde das bedeuten?

Ich habe es mit Unicode und UTF-8 versucht - erfolglos. Übrigens sind die Quelldaten von mir selbst aus wieder anderen Daten generiert. Auch hier habe ich UTF-8 und Unicode probiert.

Danke
Pida


----------

