如果插件读取文本文件,则它应采用工作台中的文本文件编码首选项。
视平台和语言环境的不同,对文本文件的编码也有所不同。大多数情况下,对主机操作系统的语言环境使用缺省文本文件编码就足够了。但是,用户可能想要使用来自另一个源的文本文件。有了在联网小组环境中使用平台的能力,用户当然就有可能想要使用(使用与他们的本机编码方案不同的编码方案的)文本文件,以便他们可以很容易地与另一小组交换文件。
由于这一原因,工作台定义它自已的编码概要文件(该概要文件由用户在首选项对话框中指定)。用户可从常规 > 编辑器首选项页面中的可用编码选项中进行选择,或者输入他们自己的编码。解释文本文件的插件(如编辑器和构建器)应查看工作台编码首选项,而不是假定已安装的操作系统编码正在使用中。
可以使用 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();