Windows API一日一練(80)MultiByteToWideChar函數
在軟體的使用過程中,經常碰到亂碼的情況,那麼亂碼的原因是什麼呢?其實很多情況下,就是字元集的不同,也就是說同一個數字代表不同意思。在Windows裡,目前主要有ANSI和UNICODE的方式。如果在UNICODE的方式裡直接顯示ANSI的字串是出現亂碼的,同樣在ANSI函數裡也不能顯示UNICODE的字串,而是要進行相互轉換才能顯示正確的字串。在NT以後的作業系統裡,Windows底層函數已經全部改為UNICODE的方式,如果還是使用ANSI的話,要比UNICODE函數慢一些,系統底層會從ANSI的方式轉換為UNICODE方式,然後再顯示出來。從ANSI轉換為UNICODE的字串,就可以使用函數MultiByteToWideChar來實現。
函數MultiByteToWideChar聲明如下:
WINBASEAPI
int
WINAPI
MultiByteToWideChar(
__in UINT CodePage,
__in DWORD dwFlags,
__in LPCSTR lpMultiByteStr,
__in int cbMultiByte,
__out_ecount_opt(cchWideChar) LPWSTR lpWideCharStr,
__in int cchWideChar);
CodePage是代碼錶。
dwFlags是轉換標誌。
lpMultiByteStr是輸入ANSI字串。
cbMultiByte是輸入ANSI的字串長度。
lpWideCharStr是輸出UNICODE字串。
cchWideChar是輸出UNICODE字串的緩衝區大小。