/*****************************************************************************
* Class : Global Function
* Function : to_MultiByte
* Description: 把Unicode轉換成多字節
* Parameters : char* strSM -- 要轉換的Unicode緩沖
* int nLength -- Unicode緩沖的長度
* Return : 轉換后的多字節字串
* Input :
* Output :
* History : Created by Rongdian Monday, APRil 29, 2002 11:03:15
* Process :
******************************************************************************/
CString to_MultiByte(char* strSM, int nLength){
UINT nLen = 0;
PBYTE lpszM;
PBYTE lpszW = new BYTE[nLength];
memcpy(lpszW, strSM, nLength);
for(int i = 0; i < nLength/2; i++)
*((unsigned short*)lpszW + i) = ntohs(*((unsigned short*)lpszW + i));
nLen = WideCharToMultiByte(936, WC_COMPOSITECHECK,
(const unsigned short*)lpszW, nLength/2, NULL, 0, NULL, NULL);
lpszM = new BYTE[nLen+1];
nLen = WideCharToMultiByte(936, WC_COMPOSITECHECK,
(const unsigned short*)lpszW, nLength/2, (char*)lpszM, nLen, NULL, NULL);
lpszM[nLen] = 0;
CString CSSM((LPCTSTR)lpszM, nLen);
delete lpszM;
delete lpszW;
return csSM;
}
/*****************************************************************************
* Class : Global Function
* Function : to_UCS2
* Description: 把多字節轉換成Unicode
* Parameters : char* strSM -- -- 要轉換的多字節緩沖
* int nLength -- 多字節緩沖的長度
* Return : 轉換后的Unicode字串
******************************************************************************/
CString to_UCS2(char* strSM, int nLength){
CString csSM((LPCTSTR)strSM, nLength);
PBYTE lpszW = NULL;
UINT nLen = 0;
nLen = MultiByteToWideChar(936, MB_PRECOMPOSED,
(LPCTSTR)csSM, csSM.GetLength(), NULL, 0);
lpszW = new BYTE[nLen * 2];
nLen = MultiByteToWideChar(936, MB_PRECOMPOSED,
(LPCTSTR)csSM, csSM.GetLength(), (LPWSTR)lpszW, nLen);
for(UINT i = 0; i < nLen; i ++)
*((unsigned short*)lpszW + i) = htons(*((unsigned short*)lpszW + i));
CString csRet((LPCTSTR)lpszW, nLen * 2);
delete lpszW;
return csRet;
}
新聞熱點
疑難解答