BOOL AnsiToUnicode(LPSTR pszA, LPWSTR* ppszW)記得退出之前LocalFree掉這塊內存就ok了.
{
DWORD cCharacters;
if (NULL == pszA)
{
*ppszW = NULL;
return FALSE;
}
cCharacters = MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, pszA, -1,
0, 0);
*ppszW = (LPWSTR) LocalAlloc(cCharacters*2);//字節長度應該爲ANSI的2倍
if (NULL == *ppszW)
return FALSE;
// Unicode轉換 -1指定根據'/0'來判斷長度,如果'/0'後也需要轉換而輸入其實際長度
//而輸出的unicode長度要爲其實際的子串長度,也就是說要WCHAR爲單位
if (0 == MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, pszA, -1,
*ppszW, cCharacters))
{
LocalFree(*ppszW);
return FALSE;
}
return TRUE;
}
BOOL UnicodeToAnsi(LPWSTR pszW, LPSTR* ppszA)
{
DWORD cCharacters;
if (pszW == NULL)
{
*ppszA = NULL;
return FALSE;
}
cCharacters = WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, pszW, -1,
NULL,NULL, NULL, NULL);
//因爲是ansi所以字節數就爲其個數
*ppszA = (LPSTR) LocalAlloc(cCharacters);
if (NULL == *ppszA)
return FALSE;
//ansi轉換.
if (0 == WideCharToMultiByte(CP_ACP, WC_COMPOSITECHECK, pszW, -1,
*ppszA,cbAnsi, NULL, NULL))
{
LocalFree(*ppszA);
return FALSE;
}
return TURE;
}
unicode,ansi編碼轉換
unicode,和ansi編碼轉換主要應用WideCharToMultiByte,MultiByteToWideChar,以下是應用方法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.