Codierung der Textdatei

Wenn Ihr Plug-in zum Lesen von Textdateien dient, sollte es die Benutzervorgaben für die Codierung von Textdateien berücksichtigen, die in der Workbench definiert sind. 

Textdateien werden abhängig von der Plattform und den verwendeten Ländereinstellungen unterschiedlich codiert.  In den meisten Fällen können Sie die Standardcodierung für Textdateien verwenden, die für die benutzten Ländereinstellungen des Host-Betriebssystems definiert sind.  Allerdings möchten Benutzer möglicherweise mit Textdateien aus anderen Quellen arbeiten.  Wenn Sie die Plattform in einer Teamumgebung mit Netzwerkunterstützung einsetzen können, dann besteht durchaus die Möglichkeit, dass die Benutzer mit Textdateien arbeiten wollen, die ein anderes als das native Codierungsschema benutzen, um den einfachen Austausch von Dateien mit einem anderen Team zu gewährleisten.

Aus diesem Grund definiert die Workbench ein eigenes Codierungsprofil, das vom Benutzer im Dialog Benutzervorgaben angegeben wird.  Auf der Benutzervorgabenseite Allgemein > Editoren können Benutzer eine der verfügbaren Codierungsoptionen auswählen, oder eine eigene Codierung eingeben.  Plug-ins für das Interpretieren von Textdateien (z. B. Editoren und Erstellungsprogramme) sollten sich daher nach den Benutzervorgaben der Workbench für die Codierung richten, anstatt davon auszugehen, dass immer das Codierungsschema des installierten Betriebssystems verwendet wird.

Die aktuelle Codierungsvorgabe kann mit Hilfe von ResourcesPlugin.getEncoding() abgerufen werden.  Diese Codierung sollte an die java.io-Eingabeprogramme übergeben werden, anstatt die Standardcodierung des Systems zu verwenden.  Wenn Sie Änderungen an dieser Benutzervorgabe protokollieren wollen, können Sie für die Benutzervorgaben von ResourcesPlugin eine Listener-Funktion integrieren und die Änderungen in ResourcesPlugin.PREF_ENCODING aufzeichnen.Das folgende Beispiel stammt aus dem Standardtexteditor:

public void initialize(StatusTextEditor textEditor) {
	
	fTextEditor= textEditor;
	
	fPropertyChangeListener= new Preferences.IPropertyChangeListener() {
		public void propertyChange(Preferences.PropertyChangeEvent e) {
			if (ResourcesPlugin.PREF_ENCODING.equals(e.getProperty()))
				setEncoding(null, false);
		}
	};
		
	Preferences p= ResourcesPlugin.getPlugin().getPluginPreferences();
	p.addPropertyChangeListener(fPropertyChangeListener);
	
	fEncodingActionGroup= new EncodingActionGroup(fTextEditor);
	fEncodingActionGroup.update();
}

Im Menü Bearbeiten > Codierung kann ein Benutzer auch die Codierung für eine bestimmte Datei ändern. Wenn Sie Text in einem geöffneten Editor bearbeiten, sollten Sie stattdessen IEncodingSupport.getEncoding() verwenden, um die Codierung für den speziellen Editor abzurufen.  Das folgende Beispiel veranschaulicht, wie diese Informationen aus einem Editor abgerufen werden:

IEncodingSupport encodingSupport = (IEncodingSupport) editor.getAdapter(IEncodingSupport.class);
String encoding = encodingSupport.getEncoding();