Как настроить кодировку SWT-меток в EclipsePlugin?
У меня есть EclipsePlugin, который использует IWorkbenchPreferencePage
в окне -> настройки.Описание (setDescription()
) содержит немецкий Umlaute (ä, ö, ü), которые не работают во время выполнения.
Кроме того, у меня есть другой диалог в моем плагине, который показывает ту же проблему в org.eclipse.swt.widgets.Label
s.Я предполагаю, что IWorkbenchPreferencePage.setDescription()
также создает метку, поэтому я считаю, что это та же проблема.
«сломан» означает, что во время выполнения умлауты отображаются в виде двух символов вместо одного, я думаю, что этопотому что умлауты выражаются в 2 байта, но они читаются как 1-байтовые символы.
Странно, но такое поведение применяется только в экспортированном и установленном плагине, а не в плагине, который выполняется в рабочей среде (Plugin.xml -> run as Eclipse Application)
Уже есть некоторыеболее ранние описания этой проблемы, предлагающие использовать другие шрифты, но я не верю, что это проблема.Поскольку использование escape-символов Юникода (например, \ u00f6 вместо «ö») в строках приводит к правильным умлаутам, я считаю, что проблема заключается скорее в процессе экспорта, чем в самих ярлыках.
Короткий пример:
Plugin.xml:
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
point="org.eclipse.ui.preferencePages">
<page
class="org.example.PreferencePage"
id="org.example.PreferencePage"
name="Umlaute">
</page>
</extension>
</plugin>
Реализация:
package org.example;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
public class PreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
@Override
public void init(IWorkbench workbench) {
setDescription("This character is broken: \"ö\". This is ok: \u00f6");
}
@Override
protected void createFieldEditors() {
}
}
Результат выглядит следующим образом: