どうやってどうやったらいいのか分かりません。それがRCP固有の問題なのか、それともJava固有のものなのかどうかはわかりません。なぜJavaソースファイルでUnicodeをエスケープする必要がありますか?
私のJavaソースファイルは、UTF-8でエンコードされています。
私はこのように私のリテラル文字列を定義する場合:
:私は期待して私はEclipseアプリケーションとしてのEclipseから起動して、アプリケーションで文字列を使用する場合new Language("fr", "Français"),
new Language("zh", "中文")
それは動作します
「Eclipseプロダクトエクスポートウィザード」で作成した.exeを起動すると失敗した場合:
私が使用ソリューションは、このような文字をエスケープすることです:これを行うには問題はありません
new Language("fr", "Fran\u00e7ais"), // Français
new Language("zh", "\u4e2d\u6587") // 中文
けど(すべての私の他の文字列は、プロパティファイルに名前だけがハードコードされている言語ですが)理解したい。
私は、コンパイラがthe bytecodeをビルドするときにJavaリテラル文字列を変換しなければならないと考えました。では、なぜユニコードをエスケープする必要がありますか? Javaソースファイルで高範囲のUnicode文字を使用するのは間違っていますか?コンパイル時の文字と、エスケープされた文字の扱いとは何が違うのでしょうか?問題はちょうどRCPキャッシュに関連していますか?
のbuild.propertiesファイルにテキストエンコーディングを指定することにより、正常に動作させることができます。おそらく、エンコーディングをUTF-8に設定してEclipseのJVMを実行する必要があります( 'eclipse.ini'の' -Dfile.encoding = UTF8')? –
これは本当になぜそれが起こるのか説明していませんが、代替ソリューションを提案し、何らかの理由でエクスポートウィザードがプロジェクトのエンコーディングを正しく尊重していないように見えることを示しています:http://stackoverflow.com/questions/6891079/eclipse- rcp-wrong-encoding-when-deploying-product – Jiddo
@Matt Ballの説明を確認するために、私は正しいと思っています。ウィザードで次のオプションを設定してみてください: "ワークスペースでコンパイルされたクラスファイルを使用する" –