簡體和繁體內碼互轉的C++代碼

簡體和繁體內碼互轉的C++代碼

CString CChineseCodeLib::Big5ToGBK(LPCTSTR strBig5)

char* pszBig5=NULL; //Big5編碼的字符 
wchar_t* wszUnicode=NULL; //Unicode編碼的字符 
char* pszGbt=NULL; //Gb編碼的繁體字符 
char* pszGbs=NULL; //Gb編碼的簡體字符 
CString strGBK; //返回的字符串 
int iLen=0; //須要轉換的字符數 
pszBig5=(LPTSTR)strBig5; //讀入須要轉換的字符參數 
//計算轉換的字符數 
iLen=MultiByteToWideChar (950, 0, pszBig5, -1, NULL,0) ; 
//給wszUnicode分配內存 
wszUnicode=new wchar_t[iLen+1]; 
//轉換Big5碼到Unicode碼,使用了API函數MultiByteToWideChar 
MultiByteToWideChar (950, 0, pszBig5, -1, wszUnicode,iLen); 
//計算轉換的字符數 
iLen=WideCharToMultiByte (936, 0, (PWSTR) wszUnicode, -1, NULL,0, NULL, NULL) ; 
//給pszGbt分配內存 
pszGbt=new char[iLen+1]; 
//給pszGbs分配內存 
pszGbs=new char[iLen+1]; 
//轉換Unicode碼到Gb碼繁體,使用API函數WideCharToMultiByte 
WideCharToMultiByte (936, 0, (PWSTR) wszUnicode, -1, pszGbt,iLen, NULL, NULL) ; 
//轉換Gb碼繁體到Gb碼簡體,使用API函數LCMapString 
LCMapString(0x0804,LCMAP_SIMPLIFIED_CHINESE, pszGbt, -1, pszGbs, iLen); 
//返回Gb碼簡體字符 
strGBK=pszGbs; 
//釋放內存 
delete [] wszUnicode; 
delete [] pszGbt; 
delete [] pszGbs;ide

return strGBK; 

CString CChineseCodeLib::GBKToBig5(LPCTSTR strGBK)
{
char* pszGbt=NULL; //Gb編碼的繁體字符
char* pszGbs=NULL; //Gb編碼的簡體字符
wchar_t* wszUnicode=NULL; //Unicode編碼的字符
char* pszBig5=NULL; //Big5編碼的字符
int iLen=0; //須要轉換的字符數
CString strBig5; //返回的字符串函數

pszGbs=(char*)strGBK; //讀入須要轉換的字符參數編碼

//計算轉換的字符數
iLen=MultiByteToWideChar (936, 0, pszGbs, -1, NULL,0) ;code

//給pszGbt分配內存
pszGbt=new char[iLen*2+1];
//轉換Gb碼簡體到Gb碼繁體,使用API函數LCMapString
LCMapString(0x0804,LCMAP_TRADITIONAL_CHINESE, pszGbs, -1, pszGbt, iLen*2);內存

//給wszUnicode分配內存
wszUnicode=new wchar_t[iLen+1];
//轉換Gb碼到Unicode碼,使用了API函數MultiByteToWideChar
MultiByteToWideChar (936, 0, pszGbt, -1, wszUnicode,iLen);字符串

//計算轉換的字符數
iLen=WideCharToMultiByte (950, 0, (PWSTR) wszUnicode, -1, NULL,0, NULL, NULL) ;
//給pszBig5分配內存
pszBig5=new char[iLen+1];
//轉換Unicode碼到Big5碼,使用API函數WideCharToMultiByte
WideCharToMultiByte (950, 0, (PWSTR) wszUnicode, -1, pszBig5,iLen, NULL, NULL) ;it

//返回Big5碼字符
strBig5 = pszBig5;class

//釋放內存
delete [] wszUnicode;
delete [] pszGbt;
delete [] pszBig5;di

return strBig5;
}co

相關文章
相關標籤/搜索