飞奔的炮台 发表于 2021-9-17 15:43:18

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

下面小编就为大家带来一篇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;

char dest_gb2312;

char dest_utf8;

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;

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

http://www.zzvips.com/article/77587.html
页: [1]
查看完整版本: Linux下实现UTF-8和GB2312互相转换的方法