Si su conector lee archivos de texto, debe respetar la preferencia de codificación de archivo de texto del entorno de trabajo.
Los archivos de texto están codificados de manera distinta en función de la plataforma y del entorno local. En casi todas las ocasiones, es suficiente utilizar la codificación de archivo de texto por omisión del entorno local del sistema operativo huésped. No obstante, a un usuario puede interesarle trabajar con archivos de texto originados en otra fuente. Dada la capacidad de emplear Eclipse en un entorno de equipo conectado en red, resulta posible que los usuarios trabajen con archivos de texto que empleen un esquema de codificación distinto del nativo, para que puedan intercambiar fácilmente los archivos con otro equipo.
Por esta razón, el entorno de trabajo define un perfil de codificación propio, que el usuario especifica en el diálogo Preferencias. Los conectores que interpretan los archivos de texto, como hacen los editores y los constructores, deben consultar la preferencia de codificación del entorno de trabajo, en vez de presuponer que está vigente la codificación del sistema operativo instalado.
La preferencia de codificación actual se puede obtener a partir del conector de recursos con el método ResourcesPlugin.getEncoding(). La codificación obtenida es la que se debe pasar a los lectores de java.io, en lugar de utilizar la codificación por omisión del sistema.
Si necesita hacer un seguimiento de los cambios realizados en esta preferencia, puede enganchar un escuchador en las preferencias de ResourcesPlugin y reaccionar a los cambios en ResourcesPlugin.PREF_ENCODING. El siguiente ejemplo procede del editor de texto por omisión:
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(); }