バグ #257
高橋 徹 さんが2年以上前に更新
h4. 現象
Scene Builder 15.0.1 Windows版を、Windows 10 日本語版の上で実行すると、画面に表示される文字が化けてしまっている。
{{thumbnail(SceneBuilderScreen-1.jpg, 640)}}
h4. 再現手順
# Gluon社のScene Builder配布サイトから入手した Scene Builder 15.0.1 Windowsインストーラー版を日本語版Windowsにインストール
https://gluonhq.com/products/scene-builder/
# Scene Builderを実行
h4. 関連
Scene Builder 10.0、11.0で発生した事象[#89]が解決されていない。
h4. 調査結果
* Scene Builderのソースコードリポジトリ内では、日本語ロケールのリソースバンドル・プロパティファイル(SceneBuilderApp_ja.properties)は、ユニコードエスケープではなくUTF-8文字コードで日本語文字列が記述されている。[#257-3]
* 同ソースコードリポジトリ内では、デフォルトロケールと中国語ロケールのリソースバンドル・プロパティファイルはユニコードエスケープで記述されている[#257-3]
* 文字化け後の文字は、UTF-8日本語文字をSJIS(Windows-31j)と誤認して解釈したものとは異なるので、単純なエンコードまちがいではないと思われる[#257-5]
* Windows のロケールを日本語から英語に切り替えて、ビルドの実施をしたところ、Windowsインストーラー版に含まれる文字化けしたプロパティファイルが生成(再現)できた[#257-11]
h4. 文字化けの事象
|1|ソース中の文字 |\3=. フ |\3=. ァ |\3=. イ |\3=. ル |
|2|UTF-8符号化 |=. e3 |=. 83 |=. 95 |=. e3 |=. 82 |=. a1 |=. e3 |=. 82 |=. a4 |=. e3 |=. 83 |=. ab |
|3|CP1252解釈 |=. ã |=. ƒ |=. • |=. ã |=. ‚ |=. ¡ |=. ã |=. ‚ |=. ¤ |=. ã |=. ƒ |=. « |
|4|ユニコードエスケープ |\u00e3|\u0192|\u2022|\u00e3|\u201a|\u00a1|\u00e3|\u201a|\u00a4|\u00e3|\u0192|\u00ab|
* プロパティファイル中にUTF-8エンコーディングで日本語文字を記述 (1), (2)
* gradle がプロパティファイルをWindows英語版のロケール(Cp1252)として解釈し(3)、ユニコードスケープを生成(4)
* (4)のユニコードエスケープを日本語ロケールで実行したScene Builderが画面に表示(結果、(3)の文字が表示)
h4. バグの解決案
次の案が想定できます。
* Gradleがユニコードエスケープをしないようにビルド設定を修正する
* Gradleが正しくユニコードエスケープをするようにビルド設定を修正する
* ソースリポジトリのプロパティファイルを、UTF-8ではなくユニコードエスケープ済みに修正する
検討 T.B.D.
戻る