Inno setup Inno是否设置';支持UTF-8吗?

Inno setup Inno是否设置';支持UTF-8吗?,inno-setup,Inno Setup,我有一个Inno安装程序,它使用Pascal脚本创建自定义向导页面。安装程序似乎使用了适当的模式来支持其他语言。但是,使用CreateCustomPage()创建的自定义向导页面中显示的是垃圾字符,而不是目标语言(在本例中是俄语)中的字符串 字符串存储在[CustomMessages]节中,使用每种语言的include文件。虽然我是Inno设置的新手,但字符串的设置方式似乎与Inno设置示例以及我从互联网上各种来源阅读的说明一致 无论如何,自定义向导页面及其控件都是使用以下代码创建的: Page

我有一个Inno安装程序,它使用Pascal脚本创建自定义向导页面。安装程序似乎使用了适当的模式来支持其他语言。但是,使用
CreateCustomPage()
创建的自定义向导页面中显示的是垃圾字符,而不是目标语言(在本例中是俄语)中的字符串

字符串存储在
[CustomMessages]
节中,使用每种语言的include文件。虽然我是Inno设置的新手,但字符串的设置方式似乎与Inno设置示例以及我从互联网上各种来源阅读的说明一致

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

Page := CreateCustomPage(
  PreviousPageId,
  ExpandConstant('{cm:MyStringConstant}'),
  ExpandConstant('{cm:MyOtherStringConstant}')
);
然后,在字符串包含文件中(同样,对于俄语),字符串定义为:

[CustomMessages]
ru.MyStringConstant=<Russian string>
ru.MyOtherStringConstant=<Russian string>
[自定义消息]
ru.MyStringConstant=
ru.Myotherstring常数=
但当安装程序运行时,自定义向导页面上的字符串显示为垃圾字符(好像UTF-8字符被解释为Ansi),而不是正确的俄语文本

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


所以,我的问题是,在UTF-8字符串中使用
ExpandConstant()?或者是否有更好的函数用于从
[CustomMessages]
部分检索UTF-8字符串?

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

您还必须使用unicode字符文本在
[code]
部分中指定unicode文本


请参阅。

是否使用Unicode inno设置?是的,我使用的是Unicode版本。问题是本地化字符串文件中缺少BOM字符。谢谢。问题是,包含本地化字符串的include文件在开头缺少一个BOM表字符。一旦我添加了BOM字符,它就像champ一样工作。所以,毕竟可以使用UTF-8编码的*.isl本地化文件?@TLama:对不起,我想我应该在原始帖子中澄清这一点:这些不是.isl文件,而只是.iss文件,它们是#include'd。对不起,如果我让你充满希望的话。:-)@特拉马。不,ISL文件必须在文件头中指定的非Unicode代码页中。@Sandburg它是
ISL
文件头中的一个指令。它不能在其他任何地方使用。