linux中UTF8到GB2312等的编解码转换方法.docVIP

linux中UTF8到GB2312等的编解码转换方法.doc

  1. 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
  2. 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
  3. 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
linux中UTF8到GB2312等的编解码转换方法

在LINUX上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实现,只不过后者是针对文件的,即将指定文件从一种编码转换为另一种编码。 一、利用iconv函数族进行编码转换 iconv函数族的头文 在LINUX上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实现,只不过后者是针对文件的,即将指定文件从一种编码转换为另一种编码。 一、利用iconv函数族进行编码转换 iconv函数族的头文件是iconv.h,使用前需包含之。 #include iconv.h iconv函数族有三个函数,原型如下: (1) iconv_t iconv_open(const char *tocode, const char *fromcode); 此函数说明将要进行哪两种编码的转换,tocode是目标编码,fromcode是原编码,该函数返回一个转换句柄,供以下两个函数使用。 (2) size_t iconv(iconv_t cd,char **inbuf,size_t *inbytesleft,char **outbuf,size_t *outbytesleft); 此函数从inbuf中读取字符,转换后输出到outbuf中,inbytesleft用以记录还未转换的字符数,outbytesleft用以记录输出缓冲的剩余空间。 (3) int iconv_close(iconv_t cd); 此函数用于关闭转换句柄,释放资源。 例子1: 用C语言实现的转换示例程序 /* f.c : 代码转换示例C程序 */ #include iconv.h #define OUTLEN 255 main() { char *in_utf8 = 姝e?ㄥ??瑁?; char *in_gb2312 = 正在安装; char out[OUTLEN]; //unicode码转为gb2312码 rc = u2g(in_utf8,strlen(in_utf8),out,OUTLEN); printf(unicode--gb2312 out=%sn,out); //gb2312码转为unicode码 rc = g2u(in_gb2312,strlen(in_gb2312),out,OUTLEN); printf(gb2312--unicode out=%sn,out); } //代码转换:从一种编码转为另一种编码 int code_convert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int outlen) { iconv_t cd; int rc; char **pin = inbuf; char **pout = outbuf; cd = iconv_open(to_charset,from_charset); if (cd==0) return -1; memset(outbuf,0,outlen); if (iconv(cd,pin,inlen,pout,outlen)==-1) return -1; iconv_close(cd); return 0; } //UNICODE码转为GB2312码 int u2g(char *inbuf,int inlen,char *outbuf,int outlen) { return code_convert(utf-8,gb2312,inbuf,inlen,outbuf,outlen); } //GB2312码转为UNICODE码 int g2u(char *inbuf,size_t inlen,char *outbuf,size_t outlen) { return code_convert(gb2312,utf-8,inbuf,inlen,outbuf,outlen); } 例子2: 用C++语言实现的转换示例程序 /* f.cpp : 代码转换示例C++程序 */ #include iconv.h #include iostream #define OUTLEN 255 using namespace std;

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档