繁体   English   中英

NSIS安装程序使用错误的字符集创建目录

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM