Если модуль работает с текстовыми файлами, он должен учитывать параметр кодировка текстовых файлов рабочей среды.
Кодировка текстовых файлов различается в зависимости от платформы и локали. В большинстве случаев достаточно применять используемую по умолчанию в операционной системе кодировку. Однако может потребоваться работать с текстовыми файлами и из других источников. Учитывая возможность использования платформы в коллективной среде, вполне вероятно, что пользователи будут работать с текстовыми файлами, использующими другую схему кодировки, отличающуюся от их собственной, и необходимо гарантировать возможность обмена файлами с пользователями других групп.
Поэтому рабочая среда задает собственный профайл кодировки, указываемый пользователем в окне диалога Параметры. Пользователи могут выбрать из имеющихся кодировок на странице параметров Общие > Редакторы или указать свою кодировку. Модули, обрабатывающие текстовые файлы, например редакторы и компоновщики, должны сверяться с параметрами кодировки рабочей среды, а не полагать, что следует использовать кодировку операционной системы.
Получить параметры кодировки можно с помощью метода ResourcesPlugin.getEncoding(). Эта кодировка должна быть передана источникам java.io вместо использования кодировки системы по умолчанию. Если необходимо отследить изменения этого параметра, можно добавить получатель запросов к параметрам ResourcesPlugin и просматривать изменения в ResourcesPlugin.PREF_ENCODING. Ниже приведен пример из используемого по умолчанию текстового редактора:
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(); }
Пользователи также могут изменить кодировку для определенного файла в меню Правка > Кодировка редактора. Если вы работаете с текстом внутри открытого редактора, вместо этого используйте метод IEncodingSupport.getEncoding() для получения кодировки редактора. Ниже приведен пример получения сведений о кодировке редактора:
IEncodingSupport encodingSupport = (IEncodingSupport) editor.getAdapter(IEncodingSupport.class); String encoding = encodingSupport.getEncoding();