#include
成都網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站制作等服務(wù)項(xiàng)目。核心團(tuán)隊(duì)均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗(yàn),服務(wù)眾多知名企業(yè)客戶;涵蓋的客戶類型包括:成都柴油發(fā)電機(jī)等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗(yàn),同時(shí)也獲得了客戶的一致贊許!
// 注釋:多字節(jié)包括GBK和UTF-8
int GBK2UTF8(char *szGbk,char *szUtf8,int Len)
{
// 先將多字節(jié)GBK(CP_ACP或ANSI)轉(zhuǎn)換成寬字符UTF-16
// 得到轉(zhuǎn)換后,所需要的內(nèi)存字符數(shù)
int n = MultiByteToWideChar(CP_ACP,0,szGbk,-1,NULL,0);
// 字符數(shù)乘以 sizeof(WCHAR) 得到字節(jié)數(shù)
WCHAR *str1 = new WCHAR[sizeof(WCHAR) * n];
// 轉(zhuǎn)換
MultiByteToWideChar(CP_ACP, // MultiByte的代碼頁(yè)Code Page
0, //附加標(biāo)志,與音標(biāo)有關(guān)
szGbk, // 輸入的GBK字符串
-1, // 輸入字符串長(zhǎng)度,-1表示由函數(shù)內(nèi)部計(jì)算
str1, // 輸出
n // 輸出所需分配的內(nèi)存
);
// 再將寬字符(UTF-16)轉(zhuǎn)換多字節(jié)(UTF-8)
n = WideCharToMultiByte(CP_UTF8, 0, str1, -1, NULL, 0, NULL, NULL);
if (n > Len)
{
delete[]str1;
return -1;
}
WideCharToMultiByte(CP_UTF8, 0, str1, -1, szUtf8, n, NULL, NULL);
delete[]str1;
str1 = NULL;
return 0;
}
//UTF-8 GBK
int UTF82GBK(char *szUtf8,char *szGbk,int Len)
{
int n = MultiByteToWideChar(CP_UTF8, 0, szUtf8, -1, NULL, 0);
WCHAR * wszGBK = new WCHAR[sizeof(WCHAR) * n];
memset(wszGBK, 0, sizeof(WCHAR) * n);
MultiByteToWideChar(CP_UTF8, 0,szUtf8,-1, wszGBK, n);
n = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL);
if (n > Len)
{
delete[]wszGBK;
return -1;
}
WideCharToMultiByte(CP_ACP,0, wszGBK, -1, szGbk, n, NULL, NULL);
delete[]wszGBK;
wszGBK = NULL;
return 0;
}