[英]NSIS installer creates directory using wrong character set
在某些计算机上,我的NSIS安装程序会创建一个字符错误的文件夹。
NSIS应该使用ńchar创建一个文件夹
// U+0144 ń c5 84 LATIN SMALL LETTER N WITH ACUTE
而是用ñchar创建了一个文件夹
// U+00F1 ñ c3 b1 LATIN SMALL LETTER N WITH TILDE
有线部分仅在某些机器上发生,而我无法复制。 据我所知,此报告仅针对Windows Vista(可能是基本版)。
我怀疑这与Windows-1250到UTF的转换有关。 因为NSIS仍然不支持UTF,所以我使用的是Windows-1250编码的脚本文件。 n个字符是0xF1
和应转换为UTF U+c584
,而是安装程序与创建文件夹U+c3b1
字符。 另一方面, U+c3b1
等效于Windows-1252 0xF1
。
运行编译的安装程序时,什么会影响NSIS脚本中使用的字符的解释? 如何确保预期的转换0xF1
=> U+c584
?
在NSIS源脚本编码并没有真正决定最终的字符串,字节从脚本翻译/安装Unicode字符串发生在最终用户的系统上,因此字符以外的ASCII可基于该系统的默认代码页( 语言为非Unicode程序(系统区域设置) )。
您可以尝试为此目录名称创建一个自定义LangString 。 为此,您必须在输入ń时将编辑器代码页设置为有问题的代码页。 您可以通过在.onInit和StrCpy中检查$ LANGUAGE(或使用System::Call kernel32::GetACP()i.r0
并检查$ 0)来模拟此情况,该字符串可以在此系统上正确转换为有问题的变量。
NSIS的下一个版本可能是v3.0,我不知道您从哪里获得了2.50,但它可能只是unicode分支使用的占位符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.