为NSIS的LangString指定非ASCII字符

时间:2010-11-10 03:28:18

标签: nsis

我正在使用NSIS为我的应用程序生成Windows'安装程序。我想要一个多语言的安装程序。我正在使用LangString来指定字符串。

但是,文档似乎没有说明如何编码非ASCII字符。例如,要使用德语单词“benötigt”(其中“o”具有变音符号),我该如何编码ö?

4 个答案:

答案 0 :(得分:3)

使用Unicode version of NSIS更容易。整个问题就消失了。

答案 1 :(得分:2)

我假设我们在这里谈论的是NSIS的ANSI版本......

LangString的第二个参数是语言ID(您可以使用NSIS \ Bin \ MakeLangId.exe生成一个,但由于您可能已经使用了MUI_LANGUAGE宏或LoadLanguageFile,因此将为您定义$ {LANG_GERMAN}等)< / p>

NSIS并不真正关心字符串是如何编码的,但是如果你有很多不同语言的字符串,那么将LangString命令放在你可以包含的外部文件中可能是个好主意。这样,您可以使用不同的代码页和文本编辑器编辑不同的语言文件。

答案 2 :(得分:1)

如果要通过ANSI版本的NSIS编译器编译UNICODE字符串,则必须将此类字符串放在带.nsi的单独UCS-2 LE BOM文件中(使用Notepad++查找)格式并直接包含。

我在main.nsi的末尾使用了特别是英文版和俄文版的此类文件:

!ifdef LANG_ENGLISH
!include "${PROJECT_SRCS_ROOT}\lang_en.nsi"
!endif

!ifdef LANG_RUSSIAN
!include "${PROJECT_SRCS_ROOT}\lang_ru.nsi"
!endif

答案 3 :(得分:0)

如果您不能使用nsis的unicode版本,您可以使用latin-1(ISO 8859-1)对文本进行编码,该文本可用于生成这些变音符号,ü,ä,ö