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

问题描述 投票:0回答:1

我正在编写一个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编码,它将包含正确的测试:“这将起作用:Ä”
  3. 两者都可以在使用Run as运行时工作,即不安装插件时。

我该如何解决这个问题?

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

任何帮助表示赞赏。

eclipse plugins utf-8 character-encoding eclipse-plugin
1个回答
0
投票

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

问题在于,构建产品的PDE Builder不遵守Eclipse中配置的编码设置。它使用plattform的默认编码,它不是UTF8。这似乎是Windows唯一的问题。 java构建器不会受到此错误的影响,这就是测试期间未出现问题的原因。

错误描述:https://bugs.eclipse.org/bugs/show_bug.cgi?id=516656

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

-Dfile.encoding = UTF-8

这解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.