Linux下实现UTF-8和GB2312互相转换的方法
实例如下:
#include<iconv.h>#include<stdio.h>
#include<iconv.h>
usingnamespacestd;
intutf8togb2312(constchar*sourcebuf,size_tsourcelen,char*destbuf,size_tdestlen){
iconv_tcd;
if((cd=iconv_open("gb2312","utf-8"))==0)
return-1;
memset(destbuf,0,destlen);
constchar**source=&sourcebuf;
char**dest=&destbuf;
if(-1==iconv(cd,source,&sourcelen,dest,&destlen))
return-1;
iconv_close(cd);
return0;
}
intgb2312toutf8(constchar*sourcebuf,size_tsourcelen,char*destbuf,size_tdestlen){
iconv_tcd;if((cd=iconv_open("utf-8","gb2312"))==0)
return-1;memset(destbuf,0,destlen);
constchar**source=&sourcebuf;
char**dest=&destbuf;
if(-1==iconv(cd,source,&sourcelen,dest,&destlen))
return-1;
iconv_close(cd);
return0;
}
intmain(){
charline[80];
chardest_gb2312[200];
chardest_utf8[200];
intret;
FILE*fp=fopen("love.txt","r");
if(fp==NULL)
{
printf("ohmydear,openfail...\n");
return1;
}
memset(line,0,80);
if(NULL==fgets(line,80,fp))
{
printf("ohfgetsfail...\n");
return2;
}
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);
return0;
}
以上就是小编为大家带来的Linux下实现UTF-8和GB2312互相转换的方法全部内容了,希望大家多多支持毛票票~