您的位置:首页 > 运维架构 > Linux

Linux C转码

2014-01-13 16:21 190 查看
说到Linux C下的转码就不得不提到iconv这个函数。

还是用代码说话,我会将注释写的详细些。

#include <stdio.h>

#include <iconv.h>

//从UTF-8转到GBK,先定义两个宏,万一以后有变动修改下这里即可。

#define ICONVFROM “UTF-8”

#define ICONVTO “GBK”

/*

iconv需要一个iconv_t类型的变量作为转码标识

这里我们申请一个全局静态变量

*/

static iconv_t cnv;

/*

将转码的初始化步骤封装成函数

返回 -1 表示失败,返回 0
表示成功

*/

int iconvOpen( )

{

if ( ( cnv = iconv_open( ICONVTO,ICONVFROM ) ) != (iconv_t) -1 ) {

fprintf( stderr, “转码初始化失败” );

return -1;

}

return 0;

}

//将转码的结束工作也封装成函数

void iconvClose()

{

iconv_close( cnv );

}

/*

将转码过程封装成函数

返回 -1 表示失败,返回 0
表示成功

*/

int _iconv(char * WordBefore, char * WordAfter)

{

size_t i,j;

int r;

/*

iconv的五个参数的意义分别是:

1、
iconv_open申请的转码标识

2、
转码前的内容

3、
转码前内容的长度,如果这是存放在数组中,那么将数组的长度传过来即可。

4、
转码后内容的存放区

5、
转码内容的长度(注意是“转码内容”而不是“转码后内容存放区”的长度)

其中第5个参数一般不会用到,但还是知道比较好。

*/

if ( ( r = iconv( cnv, &WordBefore,&i, &WordAfter, &j ) ) < 0 ) {

fprintf( stderr, “转码失败\n” );

return -1;

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: