2012-06-27 10 views
12

どうやってどうやったらいいのか分かりません。それがRCP固有の問題なのか、それともJava固有のものなのかどうかはわかりません。なぜJavaソースファイルでUnicodeをエスケープする必要がありますか?

私のJavaソースファイルは、UTF-8でエンコードされています。

私はこのように私のリテラル文字列を定義する場合:

enter image description here

:私は期待して私はEclipseアプリケーションとしてのEclipseから起動して、アプリケーションで文字列を使用する場合

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

それは動作します

「Eclipseプロダクトエクスポートウィザード」で作成した.exeを起動すると失敗した場合:

enter image description here

私が使用ソリューションは、このような文字をエスケープすることです

:これを行うには問題はありません

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

けど(すべての私の他の文字列は、プロパティファイルに名前だけがハードコードされている言語ですが)理解したい。

私は、コンパイラがthe bytecodeをビルドするときにJavaリテラル文字列を変換しなければならないと考えました。では、なぜユニコードをエスケープする必要がありますか? Javaソースファイルで高範囲のUnicode文字を使用するのは間違っていますか?コンパイル時の文字と、エスケープされた文字の扱いとは何が違うのでしょうか?問題はちょうどRCPキャッシュに関連していますか?

+10

のbuild.propertiesファイルにテキストエンコーディングを指定することにより、正常に動作させることができます。おそらく、エンコーディングをUTF-8に設定してEclipseのJVMを実行する必要があります( 'eclipse.ini'の' -Dfile.encoding = UTF8')? –

+1

これは本当になぜそれが起こるのか説明していませんが、代替ソリューションを提案し、何らかの理由でエクスポートウィザードがプロジェクトのエンコーディングを正しく尊重していないように見えることを示しています:http://stackoverflow.com/questions/6891079/eclipse- rcp-wrong-encoding-when-deploying-product – Jiddo

+0

@Matt Ballの説明を確認するために、私は正しいと思っています。ウィザードで次のオプションを設定してみてください: "ワークスペースでコンパイルされたクラスファイルを使用する" –

答えて

10

Eclipse製品のエクスポートウィザードでファイルがUTF-8として解釈されていないようです。おそらく、UTF-8(-Dfile.encoding=UTF8 in eclipse.ini)に設定されたエンコーディングでEclipseのJVMを実行する必要がありますか?

(OPS要求にCopypasta'd)

2

プラグインをエクスポートする場合は、IDE内の通常のビルドプロセスから別のプロセスを介してコンパイルされます。構築プロセス(PDE.Bu​​ild)がIDEで使用されるテキストエンコーディングを無視するのはknown bugです。

輸出は、Eclipse製品エクスポートウィザードがUTF-8としてファイルを解釈していないように見えるあなたのプラグイン

javacDefaultEncoding.. =UTF-8 
関連する問題