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互相转换的方法全部内容了,希望大家多多支持毛票票~