1. 調(diào)用 WideCharToMultiByte() API
int WideCharToMultiByte (
UINT CodePage, //1 Unicode編碼的字符頁,Unicode編碼有字符頁的概念,比如gb2312/936,big5/950等
DWORD dwFlags, //2 如何處理復(fù)合unicode字符,詳細(xì)查google
LPCWSTR lpWideCharStr, //3 待轉(zhuǎn)換的unicode串
int cchWideChar, //4 表示參數(shù)3的長度 傳遞-1表示以0x00結(jié)尾
LPSTR lpMultiByteStr, //5 接受轉(zhuǎn)換后的串的字符緩沖
int cbMultiByte, //6 表示參數(shù)5lpMutiByteStr的字節(jié)大小 通常sizeof一下
LPCSTR lpDefaultChar, //7 NULL 具體google
LPBOOL lpUsedDefaultChar//8 NULL 具體google
);

2. 調(diào)用CRT函數(shù)wcstombs()
size_t wcstombs (
char* mbstr,
const wchar_t* wcstr,
size_t count );

3. 使用CString構(gòu)造器或賦值操作
// 假設(shè)有一個Unicode串wszSomeString

CString str1 ( wszSomeString ); // 用構(gòu)造器轉(zhuǎn)換
CString str2;

str2 = wszSomeString; // 用賦值操作轉(zhuǎn)換

4. 使用ATL串轉(zhuǎn)換宏
#include <atlconv.h>

// 還是假設(shè)有一個Unicode串wszSomeString



{
char szANSIString [MAX_PATH];
USES_CONVERSION; // 聲明這個宏要使用的局部變量

lstrcpy ( szANSIString, OLE2A(wszSomeString) );
}