テキスト・ファイル・エンコード

プラグインがテキスト・ファイルを読み取る場合、ワークベンチのテキスト・ファイル・エンコード設定が重要になります。  

テキスト・ファイルのエンコード

テキスト・ファイルは、プラットフォームとロケールに応じて異なった様式にエンコードされます。多くの場合、ホスト・オペレーティング・システムのロケールのデフォルト・テキスト・ファイル・エンコードで十分です。ただし、別のソースから作成されたテキスト・ファイルを使用するユーザーもいます。ネットワーク化されたチーム環境でプラットフォームを使用できるのであれば、ユーザーがテキスト・ファイルでの作業を希望するのは確実に想定されます。テキスト・ファイルを使用すればネイティブのエンコード・スキームとは異なるエンコード・スキームが使用されるので、ユーザーは別のチームと容易にファイルをやり取りできるようになります。

この理由から、ワークベンチは独自のエンコード・プロファイルを定義します。これは、「設定」ダイアログでユーザーによって指定されます。  ユーザーは、「一般」>「ワークスペース」設定ページにある使用可能なエンコード選択項目から選択するか、または独自のエンコードを入力できます。エディターやビルダーなど、テキスト・ファイルを解釈するプラグインは、インストール済みオペレーティング・システムのエンコードが使用中であることを前提とするのではなく、ワークベンチ・エンコードの設定を調べます。

エンコード設定は、 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();