5

Pascal Script を使用してカスタム ウィザード ページを作成する Inno Setup インストーラーがあります。インストーラーは、他の言語をサポートするために適切なパターンを使用しているようです。ただし、 で作成されたカスタム ウィザード ページにCreateCustomPage()は、ターゲット言語 (この場合はロシア語) の文字列ではなく、文字化けした文字が表示されます。

文字列は[CustomMessages]、各言語のインクルード ファイルを使用してセクションに格納されます。私は Inno Setup の初心者ですが、ストリングは Inno Setup の例と一致する方法でセットアップされているように見えます。

とにかく、カスタム ウィザード ページとそのコントロールは、次のようなコードを使用して作成されます。

Page := CreateCustomPage(
  PreviousPageId,
  ExpandConstant('{cm:MyStringConstant}'),
  ExpandConstant('{cm:MyOtherStringConstant}')
);

次に、文字列インクルード ファイル (ロシア語の場合) で、文字列は次のように定義されます。

[CustomMessages]
ru.MyStringConstant=<Russian string>
ru.MyOtherStringConstant=<Russian string>

しかし、インストーラーを実行すると、カスタム ウィザード ページの文字列が、適切なロシア語テキストではなく、文字化けした文字 (UTF-8 文字が Ansi として解釈されているかのように) で表示されます。

インストーラーの他のページ (つまり、 で作成されていないページCreateCustomPage()) は正しく表示されます。

ExpandConstant()それで、私の質問は、 UTF-8 文字列を使用する場合、何か特別なことをする必要がありますか? または、セクションから UTF-8 文字列を取得するために使用するより良い関数はあります[CustomMessages]か?

4

1 に答える 1

4

InnoコンパイラのUnicodeバージョンを実行している限り、UTF-8はメインのISSファイルでサポートされます。UTF-8または任意のUnicode形式をISL言語ファイルで使用することはできません。これらは、適切なコードページが指定されたANSIである必要があるためです。

また、セクションでUnicodeテキストを指定するには、Unicode文字リテラルを使用する必要があります[Code]

詳細については、ヘルプファイルのUnicodeInnoSetupの記事を参照してください

于 2013-02-05T10:49:55.363 に答える