c语言字符串如何转换成gbk,C语言实现GBK/GB2312/五大码之间的转换(转)

//---------------------------------------------------------------------------// 大五码Big5转GBK码:void __fastcall BIG52GBK(char *szBuf){if (!strcmp(szBuf, ""))return;int nStrLen = strlen(szBuf);wchar_t *pw...
摘要由CSDN通过智能技术生成

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

// 大五码Big5转GBK码:

void __fastcall BIG52GBK(char *szBuf)

{

if (!strcmp(szBuf, ""))

return;

int nStrLen = strlen(szBuf);

wchar_t *pws = new wchar_t[nStrLen + ];

try

{

int nReturn = MultiByteToWideChar(, , szBuf, nStrLen, pws, nStrLen + );

BOOL bValue = false;

nReturn = WideCharToMultiByte(, , pws, nReturn, szBuf, nStrLen + , "?", &bValue);

szBuf[nReturn] = ;

}

__finally

{

delete[] pws;

}

}

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

// GBK转大五码(Big5)

void __fastcall GBK2BIG5(char *szBuf)

{

if(!strcmp(szBuf, ""))

return ;

int nStrLen = strlen(szBuf);

wchar_t *pws = new wchar_t[nStrLen + ];

try

{

MultiByteToWideChar(, , szBuf, nStrLen, pws, nStrLen + );

BOOL bValue = false;

WideCharToMultiByte(, , pws, nStrLen, szBuf, nStrLen + , &

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言中可以使用iconv库来实现字符串转换。iconv库提供了一个函数iconv(),可以将一个编格式的字符串转换成另一个编格式的字符串。 下面是一个示例程序,将UTF-8编字符串转换成GBK字符串: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <iconv.h> int main() { const char *utf8str = "你好,世界!"; size_t utf8len = strlen(utf8str); size_t gbklen = utf8len * 2; char *gbkstr = (char*)malloc(gbklen); memset(gbkstr, 0, gbklen); iconv_t cd = iconv_open("GBK", "UTF-8"); if (cd == (iconv_t)-1) { printf("iconv_open failed: %s\n", strerror(errno)); return -1; } char *inbuf = (char*)utf8str; char *outbuf = gbkstr; if (iconv(cd, &inbuf, &utf8len, &outbuf, &gbklen) == (size_t)-1) { printf("iconv failed: %s\n", strerror(errno)); return -1; } printf("GBK string: %s\n", gbkstr); iconv_close(cd); free(gbkstr); return 0; } ``` 在该示例程序中,首先定义了一个UTF-8编字符串utf8str,然后计算出转换后的GBK字符串所需的长度gbklen,并动态分配了一个长度为gbklen的内存空间gbkstr。 接下来,使用iconv_open()函数打开一个转换句柄cd,将目标编设置为GBK,源编设置为UTF-8。如果iconv_open()函数返回-1,则表示打开转换句柄失败,程序将返回-1。 然后,将输入缓冲区指针inbuf指向utf8str,输出缓冲区指针outbuf指向gbkstr,调用iconv()函数将输入数据从UTF-8编转换成GBK,并将转换后的数据存储到输出缓冲区gbkstr中。如果iconv()函数返回-1,则表示转换失败,程序将返回-1。 最后,使用iconv_close()函数关闭转换句柄,释放动态分配的内存空间,程序正常退出。 注意:在使用iconv库时,需要包含头文件#include <iconv.h>,并链接libiconv库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值