5

我有一个使用 Pascal 脚本创建自定义向导页面的 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 字符串时是否需要做一些特别的事情?或者是否有更好的函数用于从该[CustomMessages]部分检索 UTF-8 字符串?

4

1 回答 1

4

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

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

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

于 2013-02-05T10:49:55.363 回答