InnoSetup如何处理INI文件编码

问题描述

我在InnoSetup脚本的[INI]部分有一个常规条目

例如

[INI]
Filename: "{app}\myinifile.ini"; Section: "MY_SECTION"; Key: "MY_KEY"; String: "value which contains a symbol (§) that is different between ascii and UTF-8 encoding: §" 

现在,在某些系统上,如果创建了INI文件,则将段落符号(“§”)当作预期的ascii处理,而在其他系统上,则将其转换为UTF-8。

实际上,如果我分析这些文件的确切内容

通常我有:§=>“ 47”(十六进制)
但是在某些系统上是这样:§=>“ C2 47”(十六进制),它是“§”的UTF-8表示形式
但是为什么会有这种差异呢?

我认为Inno Setup使用Win-API中的常规WritePrivateProfilString。我在Win-Api中找到了这个:

winbase.h标头将GetPrivateProfileString定义为别名, 自动选择此功能的ANSI或Unicode版本 基于UNICODE预处理程序常量的定义。

但是:如何告诉Inno Setup始终使用它的ANSI变体?

解决方法

在另一个线程上解决它,因为您是对的,它与InnoSetup没有直接关系,请参阅:

https://stackoverflow.com/a/63989920/10934555

无论如何,非常感谢,InnoSetup表现出了:-)