我有一個簡單的問題,我似乎無法澄清,儘管我研究了堆棧溢出及其他問題。我的問題涉及Windows SystemParametersInfo函數及其變體SystemParametersInfoW(Unicode)和SystemParametersInfoA(ANSI)與Python 3.x腳本的關係。Python - Windows SystemParametersInfoW與SystemParametersInfoA函數之間的區別函數
在我寫的Python腳本中,我遇到了兩種不同的解釋,說明何時使用這些變體。 This answer to a question表示對於64位機器,您必須使用SystemParametersInfoW,而對於32位機器,您必須使用SystemParametersInfoA,因此您應該運行一個函數以確定腳本運行在哪臺位機上。然而,another answer here(我已經看到更多人主張這種類型的答案)和here說SystemParametersInfoW 必須與Python 3.x一起使用,因爲它傳遞一個Unicode字符串,而SystemParametersInfoA用於Python 2.x及更低版本因爲它傳遞了一個有利於ANSI的字節串。
那麼什麼是正確的答案,因爲我需要用我的腳本以不同的方式繼續前進?同樣,我使用的是Python 3.5,所以第二個答案是合適的,但是在使用SystemParametersInfoW和SystemParametersInfoA之間的機器位是否有任何事實?它是兩種答案的混合物,還是應該繼續使用SystemParametersInfoW,而不管它是否將用於32位或64位計算機上?我甚至需要確定腳本運行的機器的位數?感謝您對澄清此問題的幫助!
32位/ 64位的事情是胡說八道。如果您的編程語言支持Unicode字符串,請繼續並使用Unicode版本 - 您無需擔心所運行的Windows版本。 (當然,除非你需要支持Windows 95/98/ME,或16位Windows,我想。不可思議的事現在!) –
文件/註冊表名稱,窗口的文本,用戶名等都是Unicode的。通過ANSI API可以爲您的語言環境代碼頁提供一種不值錢的有損翻譯。讓代碼頁死掉,並用MS-DOS和Windows 9.x(其核心基本上是一個32位DOS擴展器)將它們埋葬。這些舊系統上沒有支持的Python構建版本。無論何時調用WinAPI函數,Python 2的用戶都應該使用'unicode'字符串,這不幸在Unix和Windows代碼之間形成楔形,但這僅僅是跨平臺代碼的一個難題。 – eryksun