Codificação de ficheiros de texto

Se o plug-in se destinar a ler ficheiros de texto, deverá respeitar a preferência de codificação de ficheiros de texto na área de trabalho.  

text file encoding

Os ficheiros de texto são codificados de maneira diferente consoante a plataforma e o locale.  Regra geral, basta utilizar a codificação de ficheiros de texto do sistema operativo central para o locale.  Todavia, um utilizador poderá optar por trabalhar com ficheiros de texto oriundos de outra fonte.  Perante a capacidade de utilizar a plataforma num ambiente de equipa em rede, é certamente possível que os utilizadores queiram trabalhar com ficheiros de texto que usem um esquema de codificação diferente do esquema de codificação nativo, a fim de trocarem facilmente ficheiros com outra equipa.

Por esta razão, a área de trabalho define o seu próprio perfil de codificação que é especificado pelo utilizador na caixa de diálogo Preferências.  Os utilizadores podem seleccionar as escolhas de codificação disponíveis na página de preferências Geral > Espaço de Trabalho ou introduzir a própria codificação. Os plug-ins que interpretam ficheiros de texto como, por exemplo, editores e construtores, devem consultar a preferência de codificação da área de trabalho em vez de supor que está a ser usada a codificação do sistema operativo instalado.

Poderá obter a preferência de codificação com ResourcesPlugin.getEncoding().  Esta codificação deve ser transmitida a leitores java.io em vez de utilizar a codificação de sistema predefinida.  Se quiser acompanhar as alterações a esta preferência, poderá ligar um ouvinte via gancho às preferências de ResourcesPlugin e reagir a alterações em ResourcesPlugin.PREF_ENCODING.  O exemplo seguinte vem do editor de texto predefinido:

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

Os utilizadores também poderão alterar a codificação de determinado ficheiro no menu Editar > Codificação de um editor. Se manipular texto dentro de um editor aberto, deverá usar IEncodingSupport.getEncoding() para poder obter a codificação para esse editor. O exemplo seguinte mostra como obter estas informações de junto de um editor:

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