GBK下的简繁体转换

//注: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不要改

你可能感兴趣的:(GBK下的简繁体转换)