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

实例如下:

  #include<iconv.h> #include <stdio.h>    #include<iconv.h>  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( "----- :%sn",line );    ret = gb2312toutf8(line,strlen(line),dest_gb2312,200);     // ret = gb2312toutf8(dest_gb2312,strlen(dest_gb2312),dest_utf8,80);     printf( "ret=%dnnn",ret);     printf( "gb2312:%sn",line );     printf( " utf-8:%snnnnnn", dest_gb2312 );     ret = utf8togb2312(dest_gb2312,strlen(dest_gb2312),dest_utf8,200);     printf( "ret=%dnnn ",ret);     printf( " utf-8:%sn ",dest_gb2312);     printf( "gb2312:%sn ",dest_utf8);     return 0;    }

以上就是小编为大家带来的Linux下实现UTF-8和GB2312互相转换的方法全部内容了,希望大家多多支持脚本之家~

参与评论