现在的Visual Studio中,大部分函数都采用了Unicode编码,而在某些场合,仍然需要将Unicode编码转换成ANSI编码,即从宽字符集转换成多字节字符集。

   Windows中已经提供了相关的两个转换函数MultiByteToWideChar和WideCharToMultiByte,实际使用中会有些复杂,为了使用方便,我将其封装成了两个函数,方便使用。

 

 
    
  1. /* 
  2.     ANSI->Unicode  
  3. */ 
  4. BOOL MByteToWChar(LPCSTR lpcszStr, LPWSTR lpwszStr, DWORD dwSize) 
  5.     DWORD dwMinSize; 
  6.     dwMinSize = MultiByteToWideChar(CP_ACP,0,lpcszStr,-1,NULL,0); 
  7.     if (dwSize < dwMinSize) 
  8.     { 
  9.         return FALSE; 
  10.     } 
  11.     MultiByteToWideChar(CP_ACP,0,lpcszStr,-1,lpwszStr,dwMinSize); 
  12.     return TRUE; 

 

 
    
  1. /* 
  2.     Unicode->ANSI  
  3. */ 
  4. BOOL WCharToMByte(LPCWSTR lpcwszStr, LPSTR lpszStr,DWORD dwSize) 
  5.     DWORD dwMinSize; 
  6.     dwMinSize = WideCharToMultiByte(CP_OEMCP,NULL,lpcwszStr,-1,NULL,0,NULL,FALSE); 
  7.     if (dwSize < dwMinSize) 
  8.     { 
  9.         return FALSE; 
  10.     } 
  11.     WideCharToMultiByte(CP_OEMCP,NULL,lpcwszStr,-1,lpszStr,dwSize,NULL,FALSE); 
  12.     return TRUE; 

 

使用方式很简单,一目了解。