简体转繁体的问题(gb2312 to big5)
下面这段代码为什么转换后得到的很多字符只能显示成 '?'
比如保卫的'卫'.
void CTranslation::Gb2Big(CString &strReturned)
{
if(IsTraditrionSystem())//判断用户windows是否为繁体
{
const char* pGbJtAsiic = strReturned;
int nGbJtAsiicLen = strlen(pGbJtAsiic);
char *pGbFtAsiic = new char[nGbJtAsiicLen+1];
memset(pGbFtAsiic,0,nGbJtAsiicLen+1);
LCMapString(0x0804,LCMAP_TRADITIONAL_CHINESE,pGbJtAsiic,nGbJtAsiicLen,pGbFtAsiic,nGbJtAsiicLen+1);
int nGbUnicodeLen = MultiByteToWideChar(936,0,pGbFtAsiic,-1,NULL,0);
wchar_t *pGbUnicode = new wchar_t[nGbUnicodeLen+1];
memset(pGbUnicode,0,sizeof(wchar_t)*(nGbUnicodeLen+1));
MultiByteToWideChar(936,0,pGbFtAsiic,nGbJtAsiicLen,pGbUnicode,nGbUnicodeLen+1);
int nBig5AsiicLen = WideCharToMultiByte(950,0,pGbUnicode,-1,NULL,0,NULL,NULL);
char* pBig5Asiic = new char[nBig5AsiicLen +1];
WideCharToMultiByte(950,0,pGbUnicode,nGbUnicodeLen,pBig5Asiic,nBig5AsiicLen,NULL,NULL);
delete[] pGbUnicode;
delete[] pGbFtAsiic;
strReturned = pBig5Asiic;
delete [] pBig5Asiic;
}
}