//注:GB2312是GBK字符集中的子集,是GBK中的简体子集;而GBK包含了简体,繁体及其他特殊符号;
//Big5是不同于GBK的繁体字库编码表
//关键转换函数:LCMapString
//GBK繁体 --> GB2312简体(GBK简体)
void CStatisticsDlg::OnBnClickedButtonLpt2lps()
{
CString strSrc;
GetDlgItemText(IDC_EDIT_LPT2LPS, strSrc); //得到strSrc:中國共產黨
if (strSrc.IsEmpty())
return ;
//如果字符集来源是ASCII等其他转换方法时,获取应分配内存的大小时或许也可以使用MultiByteToWideChar 函数
DWORD wLCID = MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_CHINESE_PRC/*SORT_CHINESE_BIG5*/); //最后一个参数也可用SORT_CHINESE_PRCP
int nLength = LCMapString(wLCID, LCMAP_SIMPLIFIED_CHINESE, strSrc, strSrc.GetLength(), NULL, 0); //获取应分配内存的个数
if (!nLength)
return ;
TCHAR *tchDest = new TCHAR[nLength + 1];
memset(tchDest, 0, (nLength + 1) * sizeof(TCHAR));
{
LCMapString(wLCID, LCMAP_SIMPLIFIED_CHINESE, strSrc, strSrc.GetLength(), tchDest, nLength + 1); //转换
CString strTemp(tchDest);
strTemp = strSrc + _T("/r/n") + strTemp;
SetDlgItemText(IDC_EDIT_LPT2LPS, strTemp);
}
delete []tchDest;
}
//GBK简体转换为GBK繁体:
只需将上面的代码中LCMapString函数的参数LCMAP_SIMPLIFIED_CHINESE改为LCMAP_TRADITIONAL_CHINESE即可,注意MAKELANGID中的参数SUBLANG_CHINESE_SIMPLIFIED不要改