簡體中文——繁體轉換

一、、、//簡體轉換爲繁體
wchar_t* Simp2Trad(const wchar_t* szUnicodeString)
{
	LCID lcid = MAKELCID(MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),SORT_CHINESE_PRC);
	int nLength = LCMapString(lcid,LCMAP_TRADITIONAL_CHINESE,szUnicodeString,-1,NULL,0);
	wchar_t* pBuffer=new wchar_t[nLength+1];
	LCMapString(lcid,LCMAP_TRADITIONAL_CHINESE,szUnicodeString,-1,pBuffer,nLength);
	pBuffer[nLength]=0;

	return pBuffer;

}


二、、、(http://blog.csdn.net/yf210yf/article/details/7850472

#include <atlstr.h>
#include <locale.h>

// char* UnicodeToBIG5(const wchar_t* szUnicodeString);
// char* UnicodeToGB2312(const wchar_t* szUnicodeString);
// wchar_t* GB2312ToUnicode(const char* szGBString);
// char* GB2312ToBIG5(const char* szGBString);
// 
// void   main() 
// {         
// 	locale loc( "chs" );//定義“區域設置”爲中文方式
// 	//wchar_t str[]=L"中國";
// 	char str[100];
// 	cin>>str;
// 	char * rlt=GB2312ToBIG5(str);
// 	CString   cStr1; 
// 	cStr1.Format( "%s",rlt); 
// 	setlocale(LC_ALL, ".950");
// 	cout<<rlt<<endl;
// } 

wchar_t* GB2312ToUnicode(const char* szGBString)
{
	UINT nCodePage = 936; //GB2312
	int nLength=MultiByteToWideChar(nCodePage,0,szGBString,-1,NULL,0);
	wchar_t* pBuffer = new wchar_t[nLength+1];
	MultiByteToWideChar(nCodePage,0,szGBString,-1,pBuffer,nLength);
	pBuffer[nLength]=0;
	return pBuffer;
}
//BIG5 轉換成 Unicode:
wchar_t* BIG5ToUnicode(const char* szBIG5String)
{
	UINT nCodePage = 950; //BIG5
	int nLength=MultiByteToWideChar(nCodePage,0,szBIG5String,-1,NULL,0);
	wchar_t* pBuffer = new wchar_t[nLength+1];
	MultiByteToWideChar(nCodePage,0,szBIG5String,-1,pBuffer,nLength);
	pBuffer[nLength]=0;
	return pBuffer;
}
//Unicode 轉換成 GB2312:
char* UnicodeToGB2312(const wchar_t* szUnicodeString)
{
	UINT nCodePage = 936; //GB2312
	int nLength=WideCharToMultiByte(nCodePage,0,szUnicodeString,-1,NULL,0,NULL,NULL);
	char* pBuffer=new char[nLength+1];
	WideCharToMultiByte(nCodePage,0,szUnicodeString,-1,pBuffer,nLength,NULL,NULL);
	pBuffer[nLength]=0;
	return pBuffer;
}
//Unicode 轉換成 BIG5:
char* UnicodeToBIG5(const wchar_t* szUnicodeString)
{
	UINT nCodePage = 950; //BIG5
	int nLength=WideCharToMultiByte(nCodePage,0,szUnicodeString,-1,NULL,0,NULL,NULL);
	char* pBuffer=new char[nLength+1];
	WideCharToMultiByte(nCodePage,0,szUnicodeString,-1,pBuffer,nLength,NULL,NULL);
	pBuffer[nLength]=0;
	return pBuffer;
}
//繁體中文BIG5 轉換成 簡體中文 GB2312
char* BIG5ToGB2312(const char* szBIG5String)
{
	LCID lcid = MAKELCID(MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),SORT_CHINESE_PRC);
	wchar_t* szUnicodeBuff = BIG5ToUnicode(szBIG5String);
	char* szGB2312Buff = UnicodeToGB2312(szUnicodeBuff);
	int nLength = LCMapStringA(lcid,LCMAP_SIMPLIFIED_CHINESE, (LPCSTR)szGB2312Buff,-1,NULL,0);
	char* pBuffer = new char[nLength + 1];
	LCMapStringA(0x0804,LCMAP_SIMPLIFIED_CHINESE,(LPCSTR)szGB2312Buff,-1,pBuffer,nLength);
	pBuffer[nLength] = 0;

	delete[] szUnicodeBuff;
	delete[] szGB2312Buff;
	return pBuffer;
}

//簡體中文 GB2312 轉換成 繁體中文BIG5
char* GB2312ToBIG5(const char* szGBString)
{
	LCID lcid = MAKELCID(MAKELANGID(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),SORT_CHINESE_PRC);
	int nLength = LCMapStringA(lcid,LCMAP_TRADITIONAL_CHINESE,szGBString,-1,NULL,0);
	char* pBuffer=new char[nLength+1];
	LCMapStringA(lcid,LCMAP_TRADITIONAL_CHINESE,szGBString,-1,pBuffer,nLength);
	pBuffer[nLength]=0;

	wchar_t* pUnicodeBuff = GB2312ToUnicode(pBuffer);
	char* pBIG5Buff = UnicodeToBIG5(pUnicodeBuff);

	delete[] pBuffer;
	delete[] pUnicodeBuff;
	return pBIG5Buff;
}



發佈了47 篇原創文章 · 獲贊 20 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章