12

方法ではなく、理由を尋ねていることに注意してください。それが 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 キャッシュに関連しているだけですか?

4

2 に答える 2

10

Eclipse Product Export Wizard がファイルを UTF-8 として解釈していないようです。-Dfile.encoding=UTF8おそらく、エンコーディングを UTF-8 ( in )に設定して Eclipse の JVM を実行する必要がありますeclipse.iniか?

(OPのリクエストでコピーパスタしました)

于 2012-06-27T13:26:10.690 に答える
3

プラグインをエクスポートすると、IDE 内の通常のビルド プロセスとは別のプロセスでコンパイルされます。ビルド プロセス (PDE.Bu​​ild) が IDE で使用されるテキスト エンコーディングを無視するという既知のバグがあります。

プラグインの build.properties ファイルでテキスト エンコーディングを指定することにより、エクスポートを適切に機能させることができます。

javacDefaultEncoding.. =UTF-8
于 2013-07-06T10:50:14.250 に答える