簡體   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