プロジェクト

全般

プロフィール

バグ #257

未完了

Scene Builder 15.0.1 Windowsインストーラー版でメニュー(日本語)が化ける

高橋 徹 さんが約3年前に追加. ほぼ3年前に更新.

ステータス:
解決
優先度:
通常
担当者:
カテゴリ:
-
対象バージョン:
-
開始日:
2021/02/06
期日:
進捗率:

80%

予定工数:
重要度:

説明

現象

Scene Builder 15.0.1 Windows版を、Windows 10 日本語版の上で実行すると、画面に表示される文字が化けてしまっている。

SceneBuilderScreen-1.jpg

再現手順

  1. Gluon社のScene Builder配布サイトから入手した Scene Builder 15.0.1 Windowsインストーラー版を日本語版Windowsにインストール
    https://gluonhq.com/products/scene-builder/
  2. Scene Builderを実行

関連

  • Scene Builder 10.0、11.0で発生した事象[#89]が解決されていない。

調査結果

  • Scene Builderのソースコードリポジトリ内では、日本語ロケールのリソースバンドル・プロパティファイル(SceneBuilderApp_ja.properties)は、ユニコードエスケープではなくUTF-8文字コードで日本語文字列が記述されている。[#257-3]
  • 同ソースコードリポジトリ内では、デフォルトロケールと中国語ロケールのリソースバンドル・プロパティファイルはユニコードエスケープで記述されている[#257-3]
  • 文字化け後の文字は、UTF-8日本語文字をSJIS(Windows-31j)と誤認して解釈したものとは異なるので、単純なエンコードまちがいではないと思われる[#257-5]
  • Windows のロケールを日本語から英語に切り替えて、ビルドの実施をしたところ、Windowsインストーラー版に含まれる文字化けしたプロパティファイルが生成(再現)できた[#257-11]

文字化けの事象

UTF-8で記述された日本語ロケールの文字列リソース(プロパティファイル)を、Windows環境でのビルド時にUTF-8ではなくCP1252(ラテン文字)で解釈してしまい、誤ったユニコードエスケープを実施している。

UTF-8で記述した文字列「ファイル」がどのように変化するかを次の表に示す。

1 ソース中の文字
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)の文字が表示)

バグの解決案

想定した解決案を次に列挙。他にもあるかも

  • 案1) Gradleがユニコードエスケープをしないようにビルド設定を修正する[#247-17]
  • 案2) Gradleが正しくユニコードエスケープをするようにビルド設定を修正する[#247-15]
  • 案3) ソースリポジトリのプロパティファイルを、UTF-8ではなくユニコードエスケープ済みに修正する

案1は、別な問題が生じたため却下
案2は、OK
案3は、JDK 9以降から削除されてしまったnative2asciiコマンドが必要となるので、最後の手段としていた。案2がOKとなったので案3は未実施。

Scene Builderへの修正案の提示(プルリクエスト)

プルリクエストの反映

プルリクエストに対し、
Gluon CLA(Gluon Individual Contributor License Agreement)に署名を求められたのでざっと読んで署名。
https://docs.google.com/forms/d/16aoFTmzs8lZTfiyrEm8YgMqMYaGQl0J8wA0VJE2LCCY/viewform?edit_requested=true

CLAの中を見ると、会社の業務としてソフトウェア開発をしている中でプルリクエスト(修正コード)を提供する場合は、そのコードが法人著作となるので雇用者(会社)がそのコードの知的財産権を放棄するか、雇用者(会社)がGluonとの法人CLAを結ぶかが必要となるようです。

しばらくすると、プルリクエストがマージされました。
これで次回リリースから日本語が化けなくなるかと期待。
→ MSIパッケージへのビルド手順が見えないので一抹の不安あり。

問題解消

プルリクエストがマージされた後のリリースとなる Scene Builder 16 で問題が解消されました。


ファイル

SceneBuilderScreen-1.jpg (532 KB) SceneBuilderScreen-1.jpg 文字化け画面 高橋 徹, 2021/02/06 11:35
SceneBuilderApp_ja.properties (100 KB) SceneBuilderApp_ja.properties SceneBuilder-15.0.1-all.jarに含まれているファイル 高橋 徹, 2021/02/06 21:46
clipboard-202102062151-geowf.png (2.34 KB) clipboard-202102062151-geowf.png 高橋 徹, 2021/02/06 21:51
clipboard-202102070929-vhvsd.png (164 KB) clipboard-202102070929-vhvsd.png 高橋 徹, 2021/02/07 09:29

関連するチケット 1 (1件未完了0件完了)

関連している バグ #89: Scene Builder 10.0.0 及び 11.0.0 Windowsインストーラー版でメニュー(日本語)が化ける進行中高橋 徹2018/08/25

操作

他の形式にエクスポート: Atom PDF