プロジェクト

全般

プロフィール

バグ #257

高橋 徹 さんが約3年前に更新

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]が解決されていない。 

 * scenebuilder の githubリポジトリのissue 
 https://github.com/gluonhq/scenebuilder/issues/194 

 h4. 調査結果 

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

 h4. 文字化けの事象 

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

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

 |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がユニコードエスケープをしないようにビルド設定を修正する[#247-17] Gradleがユニコードエスケープをしないようにビルド設定を修正する 
 * Gradleが正しくユニコードエスケープをするようにビルド設定を修正する[#247-15] 
 * ソースリポジトリのプロパティファイルを、UTF-8ではなくユニコードエスケープ済みに修正する 

 検討 T.B.D. 

戻る