2012-06-27 4 views
12

Обратите внимание, что я не спрашиваю, как, но почему. И я не знаю, является ли это специфической проблемой RCP или если это что-то присущее java.Зачем мне удалять unicode в исходных файлах java?

Мои исходные файлы java закодированы в UTF-8.

Если я определяю свои буквенные строки, как это:

new Language("fr", "Français"), 
    new Language("zh", "中文") 

Он работает, как я ожидал, когда я использую строку в приложении, запустив его из Eclipse, как приложение Eclipse:

enter image description here

Но если сбой при запуске .exe, созданного «Мастером экспорта продуктов Eclipse»:

Решение, которое я использую, чтобы избежать символов, как это:

new Language("fr", "Fran\u00e7ais"), // Français 
    new Language("zh", "\u4e2d\u6587") // 中文 

Там нет никаких проблем в этом (все остальные мои строки находятся в файлах свойств, только языки имена жестко закодированы), но я «Я хотел бы понять.

Я думал, что компилятор должен был преобразовать строковые строки java при построении the bytecode. Итак, почему нужно избегать unicode? Неправильно ли использовать символы unicode с высоким диапазоном в исходных файлах Java? Что происходит именно с этими символами при компиляции и в чем они отличаются от обработки экранов с экранами? Проблема связана только с кешем RCP?

+10

Оказывается, что мастер экспорта Eclipse, продукт не интерпретировать ваши файлы в кодировке UTF-8. Возможно, вам нужно запустить JVM Eclipse с набором кодировок в UTF-8 ('-Dfile.encoding = UTF8' в' eclipse.ini')? –

+1

Хотя это на самом деле не объясняет, почему это происходит, оно предлагает альтернативное решение и указывает, что мастер экспорта по какой-либо причине, похоже, не оправдывает правильность кодировки проекта: http://stackoverflow.com/questions/6891079/eclipse- rcp-wrong-encoding-when-deploying-the-product – Jiddo

+0

Чтобы подтвердить объяснение @Matt Ball, я думаю, что это правильно, попробуйте установить в мастере следующую опцию: «Использовать файлы классов, скомпилированные в рабочей области» –

ответ

10

Похоже, что мастер экспорта продуктов Eclipse не интерпретирует ваши файлы как UTF-8. Возможно, вам нужно запустить JVM Eclipse с кодировкой, установленной в UTF-8 (-Dfile.encoding=UTF8 в eclipse.ini)?

(Copypasta'd по запросу OPS)

2

При экспорте плагин, он компилируется с помощью процесса, отдельного от нормального процесса сборки внутри IDE. Существует known bug, что процесс сборки (PDE.Build) игнорирует текстовую кодировку, используемую IDE.

экспорт может быть сделано, чтобы работать должным образом, указав кодировку текста в файле build.properties вашего плагина

javacDefaultEncoding.. =UTF-8 
Смежные вопросы