# Ganymed - Encoding-Problem



## Wolfgang Lenhard (10. Jul 2008)

Hi,
ich schreibe und lese Textfiles aus Programmen eigentlich immer im Standard-Encoding des Systems und verwende hierzu den FileReader bzw. den FileWriter. Die Workspace habe ich auf UTF-8 gestellt.
Gerade habe ich Eclipse Ganymed installiert (davor hatte ich Eclipse Europe) und jetzt gibt es pötzlich Probleme: Beim Lesen von Textdateien mit dem FileReader bekomme ich auf Windows pötzlich bei Umlauten diese häßlichen Kästchen, obwohl ja das Encoding nach wie vor CP1252 ist. Ist das ein Bug von Ganymed, oder liege ich falsch? Bei allen anderen IDEs klappte es völlig problemlos, und natürlich auch, wenn ich meine Programme ohne IDE starte. Nur beim Starten via Ganymed gibt es das Problem.

Viele Grüße,
   Wolfgang Lenhard

P.S.: Meine Klasse zum Schreiben von Strings in eine Datei:

```
public static boolean saveText(File f, String s) {
		try {

			FileWriter file = new FileWriter(f);
			BufferedWriter buff = new BufferedWriter(file);
			buff.write(s);
			buff.close();
			file.close();
		}

		catch (Exception e) {
			e.printStackTrace();
			return false;
		}

		return true;
	}
```

Die Klasse zum Einlesen einer Textdatei:

```
public static String readText(File aFile) {
		String content = null;

		FileReader reader = null;

		try {
			if (aFile.exists() && aFile.isFile()) {
				reader = new FileReader(aFile);

				long fileLength = aFile.length();

				char[] arr = new char[(new Long(fileLength)).intValue()];
				int readedElements = reader.read(arr);
				if (-1 != readedElements) {
					content = new String(arr);
				}

			}
		} catch (FileNotFoundException fnfex) {
			System.out.println(fnfex.getMessage());
		} catch (IOException ioex) {
			System.out.println(ioex.getMessage());
		} finally {
			if (null != reader) {
				try {
					reader.close();
				} catch (IOException ioex) {
					System.out.println(ioex.getMessage());
				}
			}
		}
		return content;
	}
```


----------



## Wolfgang Lenhard (29. Okt 2008)

Das Posting ist schon ein bisschen her, aber das Phänomen besteht immer noch (*thread aufwärm*). Hat jemand Ähnliches bemerkt? Sollte man den FileWriter eher meiden?


----------



## Wildcard (29. Okt 2008)

Wo bekommst du Kästchen?


----------



## Wolfgang Lenhard (29. Okt 2008)

Die Kästchen: Bei der Anzeige von Strings in der GUI, also z. B. bei JLabels oder auch Elemente in einer JList. Eigentlich immer dann, wenn Umlaute auftreten, sofern diese aus externen Dateien eingelesen werden, und die Datei (anders als die Workspace) nicht UTF-8-kodiert ist.  Das Ganze passiert unmittelbar beim Einlesen von Dateien mittels eines FileReaders: Die Fehler sind direkt in den Strings zu sehen, wenn ich mir das Ganze im Debugger ansehe.
Übrigens werden auch per FileWriter geschriebene Dateien im Encoding des Projekts geschrieben, und nicht im System-Encoding.


----------



## Wildcard (29. Okt 2008)

Vielleicht ist Ganymede einfach clever genug das System Encoding der gestarteten Java Instanz auf den Workspace Wer zu setzen. Ich würde mal darauf tippen das dies gesteuert wird durch die Launch Configuration -> Common -> Console Encoding: Default - Inherited


----------



## Wolfgang Lenhard (29. Okt 2008)

Tatsächlich! Vielen Dank!

Die Leute vom Eclipse-Projekt sind wirklich clever, auch wenn in diesem Fall die Wirkung etwas verwirrend war.


----------

