Eclipse Plugin Development: немецкие умлауты, сохраненные как UTF8, отображаются неправильно в элементах управления SWT, но корректно в константе String - PullRequest
0 голосов
/ 14 февраля 2019

Я пишу Eclipse Plugin.Все мои исходные файлы закодированы как UTF8 (Alt + Enter показывает «Кодировка текстового файла: UTF8»).

Когда я запускаю свой плагин, используя «правый клик -> Запускать как приложение затмения», все работает нормально.

Однако, когда я устанавливаю свой плагин с помощью сайта обновления в другом (но идентичном, т. Е. Скопированном) приложении 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. При открытии файла test.txt в Eclipse с кодировкой UTF8 он будет содержать правильный тест: «Это БУДЕТ работать: Ä»
  3. Оба будут работать при запуске с использованием команды «Запуск от имени», т. Е. Когда нетустановка плагина.

Как мне решить эту проблему?

Я полагаю, что скомпилированные файлы плагина / bin могут (правильно) кодироваться в UTF8, но читаться в другой кодировке с помощьювторая установка Eclipse.Если так: Как мне сказать, чтобы JVM / Eclipse прочитала файлы bin модуля в UTF8?

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 14 февраля 2019

Решил проблему сам.Проблема заключалась в ошибке в Eclipse (я использую Oxygen, не уверен, существует ли проблема в других версиях).

Ошибка заключалась в том, что PDE Builder, который создает продукт, не соответствует настройкам кодировки, настроенным в Eclipse.Используется кодировка платформы по умолчанию, которая не является UTF8.Кажется, это проблема только для Windows.Построитель Java не страдает от этой ошибки, поэтому проблема не возникла во время тестирования.

Описание ошибки: https://bugs.eclipse.org/bugs/show_bug.cgi?id=516656

Решение: В качестве обходного пути я добавил следующую строку к затмению.ini сборки Eclipse, соберите продукт и установите его снова.Настройка делает UTF-8 кодировкой по умолчанию для всей виртуальной машины .:

-Dfile.encoding = UTF-8

Это решило проблему.

...