Обратите внимание, что я не спрашиваю, как, но почему. И я не знаю, является ли это специфической проблемой RCP или если это что-то присущее java.Зачем мне удалять unicode в исходных файлах 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 при построении the bytecode. Итак, почему нужно избегать unicode? Неправильно ли использовать символы unicode с высоким диапазоном в исходных файлах Java? Что происходит именно с этими символами при компиляции и в чем они отличаются от обработки экранов с экранами? Проблема связана только с кешем RCP?
Оказывается, что мастер экспорта Eclipse, продукт не интерпретировать ваши файлы в кодировке UTF-8. Возможно, вам нужно запустить JVM Eclipse с набором кодировок в UTF-8 ('-Dfile.encoding = UTF8' в' eclipse.ini')? –
Хотя это на самом деле не объясняет, почему это происходит, оно предлагает альтернативное решение и указывает, что мастер экспорта по какой-либо причине, похоже, не оправдывает правильность кодировки проекта: http://stackoverflow.com/questions/6891079/eclipse- rcp-wrong-encoding-when-deploying-the-product – Jiddo
Чтобы подтвердить объяснение @Matt Ball, я думаю, что это правильно, попробуйте установить в мастере следующую опцию: «Использовать файлы классов, скомпилированные в рабочей области» –