[英]What is "ANSI encoding" in NSIS?
就是ANSI的Windows的意思; 它是当前活动/默认的 Windows 代码页。
在 NSIS v3 之前,NSIS 始终是“ANSI”。 它调用了所有 API 函数的“A”版本。 在内部,每个字符串都被视为字节,没有进行任何转换。 这就是FileWrite
有效写入 ANSI 字符串的原因。
Unicode NSIS 安装程序调用WideCharToMultiByte(CP_ACP, ...)
在调用FileWrite
之前转换 Unicode 字符串。
对于 ASCII 而不是其他字符,它应该被认为是安全和可移植的。 另一台机器可能配置了不同的默认代码页,即使在同一台机器上,也并非所有 Unicode 字符都可以正确转换。 唯一的例外是 Windows 10/11 配置为使用 UTF-8 作为默认值,或者如果您在清单中选择加入。
如果您正在安装的应用程序也启用了 Unicode,那么您应该使用FileWriteUTF16LE
。
也可以编写Unicode.ini文件:
FileOpen $0 $INSTDIR\cfg.ini a
FileWriteUTF16LE /BOM $0 "" ; Make sure it has a BOM
FileClose $0
WriteIniStr $INSTDIR\cfg.ini Paths App $InstDir
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.