NSIS中FileWrite函数所用的ANSI编码具体指什么?
NSIS 3.x FileWrite 函数的实际编码确定方法
可以明确确定FileWrite使用的编码,分两种安装程序类型说明:
ANSI版安装程序
FileWrite直接采用运行安装程序的系统当前ANSI活动代码页写入字符串。比如中文Windows系统一般是GBK(代码页936),英文系统多为CP1252,完全依赖系统默认的ANSI编码,没有额外转换步骤。Unicode版安装程序
Unicode版NSIS内部以UTF-16存储字符串,调用FileWrite时会自动将UTF-16转换为系统当前的ANSI活动代码页编码后写入文件,无法映射的字符会按Windows默认规则替换为占位符(如?)。
实用建议
如果想彻底规避编码依赖带来的读取问题,推荐使用NSIS 3.x支持的FileWriteUTF8函数,直接写入UTF-8编码的内容(可选择是否带BOM),后续应用程序只需以UTF-8编码读取即可,无需适配不同系统的代码页。
另外,若需要精准记录编码信息,还可以在安装程序中通过GetCodePage插件获取当前系统的ANSI代码页编号,将其与路径一并写入文件,后续应用程序就能根据该编号确定对应的编码。
内容的提问来源于stack exchange,提问作者Grodriguez
相关产品推荐
相关产品推荐

