Jeder der Software im Team und mit unterschiedlichen Plattformen entwickelt, weiß wie wichtig es ist, sich auf einen gemeinsamen Zeichensatz für die Dateien zu einigen. Unter Eclipse hängt der verwendete bzw. voreingestellte Zeichensatz aber nicht nur vom Betriebssystem sondern vor allem von folgenden Einstellungen ab.

  • Datei-Einstellung: (Datei) Properties –> Resource –> Text file encoding
  • Dateityp-Einstellung: Preferences bzw. Einstellungen –> General –> Content Types –> Default encoding
  • Projekt-Einstellung: (Projekt) Properties –> Resource –> Text file encoding
  • Workspace-Einstellung: Preferences bzw. Einstellungen –> General –> Workspace –> Text file encoding

Hinweis: Die Workspace-Einstellung, wurde bei mir erst nach einem Neustart von Eclipse korrekt übernommen.

Anhand der aufgeführten Punkte wird in dieser Reihenfolge die verwendete Kodierung bestimmt. Wird also in den Datei-Einstellungen explizit für eine Datei ein Zeichensatz ausgewählt, wird dieser verwendet. Danach kommen erst die Einstellungen für den Dateityp, das Projekt, und für den Workspace.

Grundsätzlich sollte man sich vor dem Beginn des Projektes darüber Gedanken machen welcher Zeichensatz verwendet werden soll. Wurde eine Entscheidung getroffen, sollte diese konsequent bei jeder Entwicklungsumgebung eingestellt werden.

Manchnmal kommt es vor, dass der Zeichensatz während eines laufenden Projektes geändert werden muss. Dabei sollte beachtet werden, dass eine Änderung des Zeichensatzes in den Workspace-Einstellungen nicht bewirkt, dass auch die bereits exisitierenden Dateien zum neu eingestellten Zeichensatz konvertiert werden. Diese gelten grundsätzlich nur für danach neu angelegte Dateien.

Man könnte jetzt versuchen direkt in Eclipse bei jeder Datei explizit den Zeichensatz in den Datei-Einstellungen zu ändern. Dies hat jedoch den unschönen Effekt, dass die individuellen Einstellungen jeweils in die Settings-Datei „org.eclipse.core.resources.prefs“ eingetragen werden.

Beispiel:   encoding/WebContent/test=UTF-8

Eine bessere Möglichkeit ist es zum Umwandeln das Programm „iconv“ zu verwenden. Unter Mac OS X ist dies bereits installiert und kann ganz einfach mit folgender Synatx über die Kommandozeile (Terminal) ausgeführt werden.

iconv -f ISO-8859-1 -t UTF-8 testFile.xxx > testFile.utf8xxx

Normalerweise muss aber nicht nur eine Datei, sondern viele Dateien konvertiert werden. Um nicht für jede Datei diesen Befehl einzeln aufrufen zu müssen, ist hier ein kleines Script das einen Ordner und dessen Unterordner nach Dateien mit dem angegeben Dateityp konvertiert.

find /Users/test/Workspaces/Eclipse/TestProjekt -name \*.xhtml -type f | \
	(while read file; do
	iconv -f ISO-8859-1 -t UTF-8 "$file" > "${file%.xhtml}.utf8xhtml";
	 done);

Weitere Möglichkeit

Eine weitere Möglichkeit, die aber nur bedingt zu empfehlen ist, möchte ich jedoch nicht unerwähnt lassen.

Über einen Startparameter von Eclipse kann die Anwendung global auf einen Zeichnsatz eingestellt werden.

Dazu muss folgende neue Zeile in die „eclipse.ini“ Datei eingefügt werden.

  -Dfile.encoding=UTF-8

Die Datei befindet sich unter:
Mac OS X
../Eclipse.app/Contents/MacOS/
(im Finder Rechtsklick auf Datei Eclipse.app –> Paketinhalt zeigen)
Microsoft Windows
Direkt im Eclipse Ordner

Wird Eclipse über die Kommandozeile gestartet, kann der Parameter auch dort mitgegeben werden.

Zu beachten ist, dass diese Methode einige Nebeneffekte mit sich bringt. Z. B. werden beim Syntaxcheck jetzt alle Dateien in diesem Zeichensatz geprüft. Auch wenn für diese eigentlich ein anderes eingestellt ist.

Zeichensatz (Encoding) von Projekten unter Eclipse einstellen bzw. ändern

Ein Gedanke zu „Zeichensatz (Encoding) von Projekten unter Eclipse einstellen bzw. ändern

  • Tausend Dank!
    Drei der Fehlerquellen kannte ich schon und mir hat es dennoch dauernd mein Projekt zerhagelt.
    Jetzt kann ich endlich wieder die Umlaute in meinen Programmkommentaren einfügen 😉
    (Auch noch im richtigen Zeichensatz speichern, wie krank ist das denn……)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert