常见的三种中文内码转换代码呢

来源:扬中家居装修网 发布时间:2021-09-06

常见的中文内码一般有GB2312(简体中文),GBK和台湾那边用的BIG5(繁体中文),有时候看一些台湾编程论坛里的资料,都是乱码,如果在IE中浏览,则要求安装繁体字库的支持。Windows中提供了MultiByteToWideChar和WideCharToMultiByte两兄弟函数,足可以搞定这些功能了。

以下四个函数分别实现:

大五码转GBK码/GBK转大五码

GB2312码转GBK码/GBK码转GB2312码

于是有人要问了,为什么没有GB2312转BIG5和BIG5转GB2312呢,我们有GBK,可以做一下中转啊。可以将GB2312转成GBK,再将GBK转成BIG5,反之亦然。如果你嫌麻烦,可以自己写一个GB2BIG5/BIG52GB,并且欢迎你将你的代码给我一份:info@

//---------------------------------------------------------------------------

//大五码转GBK码:

//い地チ㎝瓣--中華人民共和國

void__fastcallBIG52GBK(char*szBuf)

{

if(!strcmp(szBuf,\"\"))

return;

intnStrLen=strlen(szBuf);

wchar_t*pws=newwchar_t[nStrLen+1];

try

{

intnReturn=MultiByteToWideChar(950,0,szBuf,nStrLen,pws,nStrLen+1);

BOOLbValue=false;

nReturn=WideCharToMultiByte(936,0,pws,nReturn,szBuf,nStrLen+1,\"?\",bValue);

szBuf[nReturn]=0;

}

__finally

{

delete[]pws;

}

}

//---------------------------------------------------------------------------

//GBK转大五码

//中華人民共和國--い地チ㎝瓣

void__fastcallGBK2BIG5(char*szBuf)

{

if(!strcmp(szBuf,\"\"))

return;

intnStrLen=strlen(szBuf);

wchar_t*pws=newwchar_t[nStrLen+1];

try

{

MultiByteToWideChar(936,0,szBuf,nStrLen,pws,nStrLen+1);

BOOLbValue=false;

WideCharToMultiByte(950,0,pws,nStrLen,szBuf,nStrLen+1,\"?\",bValue);

szBuf[nStrLen]=0;

}

__finally

{

delete[]pws;

}

}

//----------------------------------------------------------------------------

//抱歉,这个提示又来了,为了防止不负的转载者,只好在此留些信息。

//作者:ccrun(老妖)info@

//本文转自C++Builder研究-

//---------------------------------------------------------------------------

//GB2312码转GBK码

//中华人民共和国--中華人民共和國

void__fastcallGB2GBK(char*szBuf)

{

if(!strcmp(szBuf,\"\"))

return;

intnStrLen=strlen(szBuf);

WORDwLCID=MAKELCID(MAKELANGID

(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),SORT_CHINESE_PRC);

intnReturn=LCMapString(wLCID,LCMAP_TRADITIONAL_CHINESE,szBuf,nStrLen,NULL,0);

if(!nReturn)

return;

char*pcBuf=newchar[nReturn+1];

try

{

wLCID=MAKELCID(MAKELANGID

(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),SORT_CHINESE_PRC);

LCMapString(wLCID,LCMAP_TRADITIONAL_CHINESE,szBuf,nReturn,pcBuf,nReturn+1);

您当前的位置 :正文 strncpy(szBuf,pcBuf,nReturn);

}

__finally

{

delete[]pcBuf;

}

}

//---------------------------------------------------------------------------

//GBK码转GB2312码

//中華人民共和國--中华人民共和国

void__fastcallGBK2GB(char*szBuf)

{

if(!strcmp(szBuf,\"\"))

return;

intnStrLen=strlen(szBuf);

WORDwLCID=MAKELCID(MAKELANGID

(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),SORT_CHINESE_BIG5);

intnReturn=LCMapString(wLCID,LCMAP_SIMPLIFIED_CHINESE,szBuf,nStrLen,NULL,0);

if(!nReturn)

return;

char*pcBuf=newchar[nReturn+1];

try

{

wLCID=MAKELCID(MAKELANGID

(LANG_CHINESE,SUBLANG_CHINESE_SIMPLIFIED),SORT_CHINESE_BIG5);

LCMapString(wLCID,LCMAP_SIMPLIFIED_CHINESE,szBuf,nReturn,pcBuf,nReturn+1);

strncpy(szBuf,pcBuf,nReturn);

}

__finally

{

delete[]pcBuf;

}

}

//---------------------------------------------------------------------------

//测试代码

void__fastcallTForm1::Button1Click(TObject*Sender)

{

charszBuf[255];

//从GB2312转到GBK

strcpy(szBuf,Edit1-Text.c_str());

GB2GBK(szBuf);

Edit2-Text=String(szBuf);

//从GB2312转到BIG5,通过GBK中转

strcpy(szBuf,Edit1-Text.c_str());

GB2GBK(szBuf);

GBK2BIG5(szBuf);

Edit3-Text=String(szBuf);

}

注意,请不要使用String类的c_str()作为上述几个函数的传入参数。

查看本文来源

呼伦贝尔哪里治白癜风最好
合肥阴道炎
金华白癜风重点医院
相关推荐
杜高犬智商排第几名它是怎样的狗狗位置

杜高犬智商排第几名?它是怎样的狗狗杜高犬智商排第几名?它是怎样的狗狗宠主在想要饲 狗的时候,同样也会去了解不同狗狗的生活习...[详细]

家居百科2022.06.12
杜高犬怎么样杜高犬的优缺点位置

杜高犬怎么样?杜高犬的优缺点杜高犬怎么样?杜高犬的优缺点 14:30:43by 呦呦杜高犬身体强壮,体型健美线条流畅,通身雪白。是一种非...[详细]

家居百科2022.06.12
松狮喂养手册位置

松狮喂养手册松狮喂养手册 16:11:59出处:络点击:2646 导读:   松狮的排泄  要密切注意观察...[详细]

家居百科2022.06.12
松狮吃什么食物好松狮的营养食谱及喂养注意位置

松狮吃什么食物好?松狮的营养食谱及喂养注意事项松狮吃什么食物好?松狮的营养食谱及喂养注意事项松狮吃什么食物好?相信一些饲...[详细]

家居百科2022.06.12
杜高犬太凶了要这么纠正位置

杜高犬太凶了要这么纠正?杜高犬太凶了要这么纠正? 10:57:33出处:络点击:57 导读: 家里狗狗...[详细]

家居百科2022.06.12
杜高犬喜欢咬人要怎么办位置

杜高犬喜欢咬人要怎么办?杜高犬喜欢咬人要怎么办? 10:45:06出处:络点击:55 导读: 狗狗喜欢...[详细]

家居百科2022.06.12