[英]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.