void GBKSimplified2GBKTraditional(LPTSTR szSimplified)
{
LCID dwLocale;
WORD wLangID;
wLangID=MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED);
dwLocale=MAKELCID(wLangID,SORT_CHINESE_PRC);
int nLength;
char *pBuffer;
nLength=LCMapString(dwLocale,LCMAP_TRADITIONAL_CHINESE,(LPCTSTR)szSimplified,strlen(szSimplified),NULL,0);
pBuffer=new char[nLength+1];
pBuffer[nLength]=0;
LCMapString(dwLocale,LCMAP_TRADITIONAL_CHINESE,(LPCTSTR)szSimplified,strlen(szSimplified),pBuffer,nLength);
strcpy(szSimplified,pBuffer);
delete(pBuffer);
return;
}
//WCHAR 转换成 CHAR函数
void ConvertUnicodeToAnsi(WCHAR * Source,char * obj)
{
DWORD dwNum = WideCharToMultiByte(950,NULL,Source,-1,NULL,0,NULL,FALSE);
WideCharToMultiByte (950,NULL,Source,-1,obj,dwNum,NULL,FALSE);
}
//CHAR TO WCHAR
void ConvertAnsiTounicode(char * source,WCHAR *obj)
{
int nLength = 0;
nLength = MultiByteToWideChar(CP_ACP,0,source,-1,NULL,0);
MultiByteToWideChar(CP_ACP,0,source,-1,obj,nLength);
}
void CConvertDlg::OnButton1()
{
// TODO: Add your control notification handler code here
char p[200]={0};
strcpy(p,"语言");
WCHAR buf[200]={0};
GBKSimplified2GBKTraditional(p);
ConvertAnsiTounicode(p,buf);
strcpy(p,"");
ConvertUnicodeToAnsi(buf,p);
}
原理:
1.str 转GBK繁体
2.str 转UNICODE
3.STR 转BIG5