プラグインがテキスト・ファイルを読み取る場合、ワークベンチのテキスト・ファイル・エンコード設定が重要になります。
テキスト・ファイルは、プラットフォームとロケールに応じて異なった様式にエンコードされます。多くの場合、ホスト・オペレーティング・システムのロケールのデフォルト・テキスト・ファイル・エンコードで十分です。ただし、別のソースから作成されたテキスト・ファイルを使用するユーザーもいます。ネットワーク化されたチーム環境でプラットフォームを使用できるのであれば、ユーザーがテキスト・ファイルでの作業を希望するのは確実に想定されます。テキスト・ファイルを使用すればネイティブのエンコード・スキームとは異なるエンコード・スキームが使用されるので、ユーザーは別のチームと容易にファイルをやり取りできるようになります。
この理由から、ワークベンチは独自のエンコード・プロファイルを定義します。これは、「設定」ダイアログでユーザーによって指定されます。
ユーザーは、「一般」>「ワークスペース」設定ページにある使用可能なエンコード選択項目から選択するか、または独自のエンコードを入力できます。エディターやビルダーなど、テキスト・ファイルを解釈するプラグインは、インストール済みオペレーティング・システムのエンコードが使用中であることを前提とするのではなく、ワークベンチ・エンコードの設定を調べます。
エンコード設定は、 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();