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

2008-02-23 05:37:55来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

常见的中文内码一般有GB2312(简体中文),GBK和台湾那边用的BIG5(繁体中文),有时候看一些台湾编程论坛里的资料,都是乱码,假如在IE中浏览,则需要安装繁体字库的支持。网上也有很多中文内码的转换工具,什么专家,大师,巨匠之类任何光辉灿烂的名字都被使用了,但是在自己的程式中集成这些功能岂不是更好。以前曾广泛流传过使用码表来转换中文内码的Code,但毕竟不完美,而且还要携带或内置一个巨大的表,浪费资源。Windows中提供了MultiByteToWideChar和WideCharToMultiByte两兄弟函数,足能够搞定这些功能了。在我以前写的一个小工具InfoCode里曾用到过类似代码。

以下代码经过ccrun(老妖)收集整理调试编译测试安装售后升级除错打包发行(现在都流行吹牛,我也时髦一下吧,此处省略废话4000余字。。。),呵呵。虽然今天仓促发到偶的站上,也许明天就被别人以迅雷不及掩耳盗铃之势转载并署上自己名字并冠之以xxx终极无敌大无畏神六级别中文内码转换工具到处招摇撞骗了。

以下四个函数分别实现:
大五码转GBK码/GBK转大五码
GB2312码转GBK码/GBK码转GB2312码
于是有人要问了,为什么没有GB2312转BIG5和BIG5转GB2312呢,我们有GBK,能够做一下中转啊。能够将GB2312转成GBK,再将GBK转成BIG5,反之亦然。假如您嫌麻烦,能够自己写一个GB2BIG5/BIG52GB,并且欢迎您将您的代码给我一份:info@ccrun.com
//---------------------------------------------------------------------------
// 大五码转GBK码:
// い地?チ?㎝瓣 --> 中華人民共和國
void __fastcall BIG52GBK(char *szBuf)
{
if(!strcmp(szBuf, ""))
return;
int nStrLen = strlen(szBuf);
wchar_t *pws = new wchar_t[nStrLen 1];
try
{
int nReturn = MultiByteToWideChar(950, 0, szBuf, nStrLen, pws, nStrLen 1);
BOOL bValue = false;
nReturn = WideCharToMultiByte(936, 0, pws, nReturn, szBuf, nStrLen 1, "?", &bValue);
szBuf[nReturn] = 0;
}
__finally
{
delete[] pws;
}
}
//---------------------------------------------------------------------------
// GBK转大五码
// 中華人民共和國 --> い地?チ?㎝瓣
void __fastcall GBK2BIG5(char *szBuf)
{
if(!strcmp(szBuf, ""))
// 本文转自 C Builder 研究 - http://www.ccrun.com/article.asp?i=634&d=04g63p
return ;
int nStrLen = strlen(szBuf);
wchar_t *pws = new wchar_t[nStrLen 1];
try
{
MultiByteToWideChar(936, 0, szBuf, nStrLen, pws, nStrLen 1);
BOOL bValue = false;
WideCharToMultiByte(950, 0, pws, nStrLen, szBuf, nStrLen 1, "?", &bValue);
szBuf[nStrLen] = 0;
}
__finally
{
delete[] pws;
}
}
//----------------------------------------------------------------------------
// 抱歉,这个提示又来了,为了防止不负责任的转载者,只好在此留些信息。
// 作者:ccrun(老妖) info@ccrun.com
// 本文转自 C Builder 研究 - http://www.ccrun.com/article/go.asp?i=634&d=04g63p
//---------------------------------------------------------------------------
// GB2312码转GBK码
// 中华人民共和国 --> 中華人民共和國
void __fastcall GB2GBK(char *szBuf)
{
if(!strcmp(szBuf, ""))
return;
int nStrLen = strlen(szBuf);
WORD wLCID = MAKELCID(MAKELANGID
(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED), SORT_CHINESE_PRC);
int nReturn = LCMapString(wLCID, LCMAP_TRADITIONAL_CHINESE, szBuf, nStrLen, NULL, 0);
if(!nReturn)
return;
char

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 将ListView中的内容导出到Word和Excel(新)

下一篇: 将DBGrid中的数据导出到Word和Excel