Kodowanie pliku tekstowego

Gdy dany moduł dodatkowy czyta pliki tekstowe, powinien uwzględniać preferencję kodowanie pliku tekstowego w środowisku roboczym. 

Pliki tekstowe są kodowane w różny sposób, zależnie od platformy i ustawień narodowych.  W większości przypadków wystarcza korzystanie z domyślnego kodowania plików tekstowych i ustawień narodowych używanego systemu operacyjnego.  Jednak użytkownik może chcieć pracować z plikami tekstowymi pochodzącymi z innego źródła.  Biorąc pod uwagę możliwość korzystania z platformy w sieciowych środowiskach pracy zespołowej, jest bardzo prawdopodobne, że użytkownicy będą chcieli pracować z plikami tekstowymi korzystającymi z innych niż rodzime schematów kodowania, co pozwoli im bez problemów wymieniać pliki z innym zespołem.

Z tego powodu w środowisku roboczym definiowany jest własny profil kodowania określany przez użytkownika w oknie dialogowym Preferencje.  Użytkownicy mogą wybierać dostępne metody kodowania na stronie preferencji Środowisko robocze > Edytory lub wpisywać własne kodowania.   Moduły dodatkowe interpretujące pliki tekstowe, takie jak edytory i programy budujące, powinny uwzględniać preferencje kodowania środowiska roboczego, a nie zakładać, że używane jest kodowanie domyślne dla zainstalowanego systemu operacyjnego.

Preferencje kodowania uzyskuje się przy użyciu metody ResourcesPlugin.getEncoding().  To kodowanie powinno zostać przekazane do czytników java.io zamiast domyślnego kodowania systemowego.  Gdyby trzeba było śledzić zmiany tych preferencji, można także podłączyć funkcję nasłuchiwania do preferencji ResourcesPlugin i reagować na zmiany atrybutu ResourcesPlugin.PREF_ENCODING.  Poniższy przykład pochodzi z domyślnego edytora tekstu:

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();
}

Użytkownicy mogą także zmieniać kodowanie konkretnego pliku, używając menu Edycja > Kodowanie w edytorze.  Natomiast gdy manipuluje się tekstem wewnątrz otwartego edytora, należy korzystać z metody IEncodingSupport.getEncoding(), aby uzyskać kodowanie dla konkretnego edytora.  Poniższy przykład przedstawia sposób uzyskiwania tej informacji z edytora:

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