Inno Setup的ExpandConstant是否支持UTF-8?

pic*_*ccy 5 inno-setup

我有一个Inno Setup安装程序,可以使用Pascal Script创建自定义向导页面.安装程序似乎使用正确的模式来支持其他语言.但是,创建的自定义向导页面会在其中CreateCustomPage()显示乱码,而不是目标语言中的字符串(在本例中为俄语).

字符串存储在一个[CustomMessages]部分中,使用每种语言的包含文件.虽然我是Inno Setup的新手,但字符串似乎的设置方式与Inno Setup示例一致,并且我从互联网上的各种来源阅读说明.

无论如何,自定义向导页面及其上的控件是使用以下代码创建的:

Page := CreateCustomPage(
  PreviousPageId,
  ExpandConstant('{cm:MyStringConstant}'),
  ExpandConstant('{cm:MyOtherStringConstant}')
);
Run Code Online (Sandbox Code Playgroud)

然后,在字符串包含文件中(同样,对于俄语),字符串定义为:

[CustomMessages]
ru.MyStringConstant=<Russian string>
ru.MyOtherStringConstant=<Russian string>
Run Code Online (Sandbox Code Playgroud)

但是当安装程序运行时,自定义向导页面上的字符串会显示乱码(如同UTF-8字符被解释为Ansi),而不是正确的俄语文本.

安装程序中的其他页面(即未创建的页面CreateCustomPage())正确显示.

所以,我的问题是,在使用ExpandConstant()UTF-8字符串时是否需要做一些特别的事情?或者是否有更好的功能用于从该[CustomMessages]部分检索UTF-8字符串?

Dea*_*nna 4

只要您运行 Inno Compiler 的 unicode 版本,主 ISS 文件就支持 UTF-8。您不能在 ISL 语言文件中使用 UTF-8 或任何 unicode 格式,因为这些文件必须采用 ANSI 格式并指定适当的代码页。

您还必须使用 unicode 字符文字来指定该[Code]部分中的 unicode 文本。

有关详细信息,请参阅帮助文件中的 Unicode Inno Setup 文章