现在的Visual Studio中,大部分函数都采用了Unicode编码,而在某些场合,仍然需要将Unicode编码转换成ANSI编码,即从宽字符集转换成多字节字符集。
Windows中已经提供了相关的两个转换函数MultiByteToWideChar和WideCharToMultiByte,实际使用中会有些复杂,为了使用方便,我将其封装成了两个函数,方便使用。
- /*
- ANSI->Unicode
- */
- BOOL MByteToWChar(LPCSTR lpcszStr, LPWSTR lpwszStr, DWORD dwSize)
- {
- DWORD dwMinSize;
- dwMinSize = MultiByteToWideChar(CP_ACP,0,lpcszStr,-1,NULL,0);
- if (dwSize < dwMinSize)
- {
- return FALSE;
- }
- MultiByteToWideChar(CP_ACP,0,lpcszStr,-1,lpwszStr,dwMinSize);
- return TRUE;
- }
- /*
- Unicode->ANSI
- */
- BOOL WCharToMByte(LPCWSTR lpcwszStr, LPSTR lpszStr,DWORD dwSize)
- {
- DWORD dwMinSize;
- dwMinSize = WideCharToMultiByte(CP_OEMCP,NULL,lpcwszStr,-1,NULL,0,NULL,FALSE);
- if (dwSize < dwMinSize)
- {
- return FALSE;
- }
- WideCharToMultiByte(CP_OEMCP,NULL,lpcwszStr,-1,lpszStr,dwSize,NULL,FALSE);
- return TRUE;
- }
使用方式很简单,一目了解。
转载于:https://blog.51cto.com/sonsie007/1155526