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;
}
还是用代码说话,我会将注释写的详细些。
#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;
}
相关文章推荐
- linux常用命令(学习笔记)
- linux位数查看
- YII linux 下用命令创建应用及分模块创建应用
- linux压缩和解压缩命令大全
- android第二屏开机logo在linux下的制作方法
- CentOS删除自带的java,安装新java
- CentOS删除自带的java,安装新java
- linux压缩和解压缩命令大全
- DNS域欺骗攻击详细教程之Linux篇
- linux的bond技术
- Linux从程序到进程
- Linux C获取系统时间
- Linux终端传输二进制文件的属性设置
- Linux下sqlplus问题
- Linux进程间通信
- linux kernel 多线程
- Linux集群管理工具pssh批量管理服务器
- Linux中命令链接操作符的十个最佳实例
- Linux多线程与同步
- Linux系统下进程内存映像信息的理解: