Eclipse 插件开发:存储为 UTF8 的德语变音符号在 SWT 控件中显示错误,但在字符串常量中显示正确

Eclipse Plugin Development: German Umlauts stored as UTF8 showing up wrong in SWT controls but correct in String constant

我正在编写 Eclipse 插件。我所有的源文件都编码为 UTF8(Alt+Enter 显示 "Text file encoding: UTF8")。

当我 运行 我的插件使用 "right click -> Run as eclipse application" 时一切正常。

但是,当我使用另一个(但相同,即复制的)Eclipse 应用程序中的更新站点安装我的插件时,德语变音符号 (Ä Ö Ü...) 变得一团糟 SWT-controls,但 不是 字符串常量。

示例:

public class MyWizard extends Wizard{
    public NewEntityWizard() {
        super();
        setWindowTitle("This will NOT work: Ä");
    }

    public void foo() {

        String contents = "This WILL work: Ä";
        ByteArrayInputStream stream = new ByteArrayInputStream(contents.getBytes());
        // write stream to file test.txt
    }

  1. window 标题将显示为:"This will NOT work: ä"
  2. 在 Eclipse 中打开文件 test.txt 时,使用 UTF8 编码,它将包含正确的测试:"This WILL work: Ä"
  3. 当 运行 使用 运行 时,两者都可以工作,即不安装插件时。

我该如何解决这个问题?

我想,编译后的插件/bin 文件可能(正确地)以 UTF8 编码,但第二个 Eclipse 安装以不同的编码读取。如果是这样:如何让 JVM / Eclipse 以 UTF8 格式读取插件的 bin 文件?

感谢任何帮助。

我自己解决了这个问题。问题是 Eclipse 中的一个 Bug(我是 运行 Oxygen,不确定其他版本是否存在该问题)。

错误是,构建产品的 PDE Builder 不遵守 Eclipse 中配置的编码设置。它使用平台的默认编码,而不是 UTF8。这似乎是 Windows 唯一的问题。 java 生成器没有这个错误,这就是为什么在测试期间没有出现问题的原因。

漏洞描述: https://bugs.eclipse.org/bugs/show_bug.cgi?id=516656

解决方法: 作为解决方法,我将以下行添加到构建 Eclipse 安装的 eclipse.ini 中,再次构建产品并再次安装。该设置使 UTF-8 成为整个 VM 的默认编码。:

-Dfile.encoding=UTF-8

这解决了问题。