SceneBuilder 10で日本語が文字化けする事象の修正方法
SceneBuilderのインストーラ形式を入れて、起動するとメニューなどが文字化けする。
対処方法として知られているのが、メニューを英語で表示し対応するというもの。
qiita.com
だけど、やっぱし、日本語を正しく表示したい。ということで、調査結果とその対応方法を紹介します。
【文字化けしたメニュー】
なぜ文字化けするのか?
まず、SceneBuilder本体のjarの中身を見てみます。
「<インストールフォルダ>\SceneBuilder\app\dist.jar」 が本体です。
jarを解凍してできた中身の「com/oracle/javafx/scenebuilder/app/i18n/SceneBuilderApp_ja.properties」が画面などのプロパティファイルになります。
マルチバイトはASCIIコードに変換されているので当然だよね。
# ----------------------------------------------------------------------------- # Generic labels # ----------------------------------------------------------------------------- label.ok = OK label.cancel = \u00e5\ufffd\u2013\u00e6\u00b6\u02c6 label.close = \u00e9\u2013\u2030\u00e3\ufffd\u02dc\u00e3\u201a\u2039 label.delete = \u00e5\u2030\u0160\u00e9\u2122\u00a4 label.copy = \u00e3\u201a\u00b3\u00e3\u0192\u201d\u00e3\u0192\u00bc
と思い、プロパティエディタで開いてみると、文字化けしていた。これが原因ですね。
修正方法
元のファイルをリポジトリからとってきてとか面倒なので、「Executable Jar」版からプロパティファイルを抽出し、入れ変えて試します。
1. まず、Executable Jarである「scenebuilder-10.0.0-all.jar」をSceneBuilderのサイトからダウンロードしてきます。
2.ダウンロードしてきたファイル「scenebuilder-10.0.0-all.jar」を、SceneBuilderのインストールしたフォルダの「SceneBuilder/app/dist.jar」と同じディレクトリに配置します。
3. コマンドプロンプトで以下を実行し、jarからプロパティファイルを抽出し、dist.jarに取り込みます。
dist.jarが存在するフォルダに移動します。(環境によって異なります)
> C:\Java\SceneBuilder\app
dist.jarをコピーして、バックアップします。
> copy dist.jar dist.jar.org
scenebuilder-10.0.0-all.jarから、プロパティファイル「SceneBuilderApp_ja.properties」を抽出します。
> jar xvf scenebuilder-10.0.0-all.jar com/oracle/javafx/scenebuilder/app/i18n/SceneBuilderApp_ja.properties
抽出したプロパティファイル「SceneBuilderApp_ja.properties」をdist.jarに取り込みます。
> jar uf dist.jar com/oracle/javafx/scenebuilder/app/i18n/SceneBuilderApp_ja.properties
さあ、これでSceneBuilderを起動してみましょう。
メニューなどが正しく日本語で表示されましたね。
さあ、良いJavaFXライフを!!