Обратите внимание, что я спрашиваю не как, а почему. И я не знаю, является ли это конкретной проблемой RCP или чем-то присущим java.
Мои исходные файлы Java закодированы в UTF-8.
Если я определяю свои литеральные строки следующим образом:
new Language("fr", "Français"),
new Language("zh", "中文")
Это работает так, как я ожидаю, когда я использую строку в приложении, запуская ее из Eclipse как приложение Eclipse:
Но если происходит сбой при запуске .exe созданный «Мастером экспорта продуктов Eclipse»:
Решение, которое я использую, состоит в том, чтобы экранировать символы следующим образом:
new Language("fr", "Fran\u00e7ais"), // Français
new Language("zh", "\u4e2d\u6587") // 中文
Это не проблема (все мои другие строки находятся в файлах свойств, только названия языков жестко запрограммировано), но я хотел бы понять.
Я думал, что компилятор должен преобразовывать литеральные строки Java при построении байт-кода. Итак, почему необходимо экранирование юникода? Неправильно ли использовать символы unicode высокого диапазона в исходных файлах Java? Что именно происходит с этими символами при компиляции и чем это отличается от обработки экранированных символов? Проблема связана только с кешем RCP?