2008-10-17 48 views
4

當您使用DllImport導入函數時,您可以指定要使用的CharSet。我注意到在C#,C++和Visual Basic中,.Net運行時默認使用Ansi而不是Unicode。因此,對於任何具有A和W版本的系統調用,默認情況下都會調用A版本。 .Net在內部使用unicode,如果我沒有弄錯,windows的新版本也會將所有內容都轉換爲unicode,所以這意味着很多額外的編組開銷。我應該在dllimport中使用Ansi還是Unicode字符集?

我已經養成了總是指定unicode的習慣,這是正確的做事方式還是會導致問題呢?

回答

6

如果使用ANSI變體,如果(例如)有一個名稱不能在所使用的ANSI代碼頁中表示的文件,則會出現問題。使用Unicode的唯一缺點是您的代碼可能無法在Windows的早期版本(95,98和ME)上正常運行。

有幾個函數需要使用ANSI,因爲它們實際上使用ASCII(例如GetProcAddress)。

相關問題