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

问题描述

我正在编写一个 Eclipse 插件。我所有的源文件都编码为 UTF8(Alt+Enter 显示“文本文件编码:UTF8”)。

当我使用“右键单击-> 作为 Eclipse 应用程序运行”运行我的插件时,一切正常。

但是,当我在另一个(但相同,即复制的)Eclipse 应用程序中使用更新站点安装我的插件时,德语变音符号 (Ä Ö Ü...) 在所有 SWT 控件中都搞砸了,但在字符串常量中却没有。

例子:

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. 窗口标题将显示为:“这将不起作用:ä”
  2. 在 Eclipse 中打开文件 test.txt 时,使用 UTF8 编码,它将包含正确的测试:“This WILL work: Ä”
  3. 两者都可以在使用 Run as 运行时工作,即在不安装插件时。

我该如何解决这个问题?

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

任何帮助表示赞赏。

标签: eclipsepluginsutf-8character-encodingeclipse-plugin

解决方案


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

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

错误说明: https ://bugs.eclipse.org/bugs/show_bug.cgi?id=516656

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

-Dfile.encoding=UTF-8

这解决了这个问题。


推荐阅读