方法ではなく、理由を尋ねていることに注意してください。それが RCP 固有の問題なのか、それとも Java 固有の問題なのかはわかりません。
Java ソース ファイルは UTF-8 でエンコードされています。
次のようにリテラル文字列を定義すると:
new Language("fr", "Français"),
new Language("zh", "中文")
Eclipse から Eclipse アプリケーションとして起動してアプリケーションで文字列を使用すると、期待どおりに動作します。
しかし、「Eclipse Product Export Wizard」によってビルドされた .exe を起動すると失敗した場合:
私が使用する解決策は、次のように文字をエスケープすることです。
new Language("fr", "Fran\u00e7ais"), // Français
new Language("zh", "\u4e2d\u6587") // 中文
これを行うことに問題はありません (他のすべての文字列はプロパティ ファイルにあり、言語名のみがハードコードされています) が、理解したいと思います。
bytecodeをビルドするときに、コンパイラは Java リテラル文字列を変換する必要があると思いました。では、なぜユニコードエスケープが必要なのでしょうか? javaソースファイルで高範囲のUnicode文字を使用するのは間違っていますか? コンパイル時にこれらの文字に正確に何が起こりますか?エスケープされた文字の処理とは異なりますか? 問題は RCP キャッシュに関連しているだけですか?