linux gb2312转utf-8,Linux下实现UTF-8和GB2312互相转换的方法

#include #include

#include

using namespace std;

int utf8togb2312(const char *sourcebuf,size_t sourcelen,char *destbuf,size_t destlen) {

iconv_t cd;

if( (cd = iconv_open("gb2312","utf-8")) ==0 )

return -1;

memset(destbuf,0,destlen);

const char **source = &sourcebuf;

char **dest = &destbuf;

if(-1 == iconv(cd,source,&sourcelen,dest,&destlen))

return -1;

iconv_close(cd);

return 0;

}

int gb2312toutf8(const char *sourcebuf,size_t sourcelen,char *destbuf,size_t destlen) {

iconv_t cd; if( (cd = iconv_open("utf-8","gb2312")) ==0 )

return -1; memset(destbuf,0,destlen);

const char **source = &sourcebuf;

char **dest = &destbuf;

if(-1 == iconv(cd,source,&sourcelen,dest,&destlen))

return -1;

iconv_close(cd);

return 0;

}

int main() {

char line[80];

char dest_gb2312[200];

char dest_utf8[200];

int ret ;

FILE *fp = fopen("love.txt","r");

if(fp == NULL)

{

printf("oh my dear,open fail...\n");

return 1;

}

memset(line,0,80);

if( NULL == fgets(line,80,fp))

{

printf("oh fgets fail...\n");

return 2;

}

printf( "----- :%s\n",line );

ret = gb2312toutf8(line,strlen(line),dest_gb2312,200);

// ret = gb2312toutf8(dest_gb2312,strlen(dest_gb2312),dest_utf8,80);

printf( "ret=%d\n\n\n",ret);

printf( "gb2312:%s\n",line );

printf( " utf-8:%s\n\n\n\n\n\n", dest_gb2312 );

ret = utf8togb2312(dest_gb2312,strlen(dest_gb2312),dest_utf8,200);

printf( "ret=%d\n\n\n ",ret);

printf( " utf-8:%s\n ",dest_gb2312);

printf( "gb2312:%s\n ",dest_utf8);

return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值