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