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

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

ID:39465467

大小:45.00 KB

页数:6页

时间:2019-07-04

linux中UTF8到GB2312等的编解码转换方法_第1页
linux中UTF8到GB2312等的编解码转换方法_第2页
linux中UTF8到GB2312等的编解码转换方法_第3页
linux中UTF8到GB2312等的编解码转换方法_第4页
linux中UTF8到GB2312等的编解码转换方法_第5页
资源描述:

《linux中UTF8到GB2312等的编解码转换方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、在LINUX上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实现,只不过后者是针对文件的,即将指定文件从一种编码转换为另一种编码。一、利用iconv函数族进行编码转换iconv函数族的头文在LINUX上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实现,只不过后者是针对文件的,即将指定文件从一种编码转换为另一种编码。一、利用iconv函数族进行编码转换iconv函数族的头文件是iconv.h,使用前需包含之。#includeiconv函数族有三个函数,原型如下:(1)iconv_ticonv_open(cons

2、tchar*tocode,constchar*fromcode);此函数说明将要进行哪两种编码的转换,tocode是目标编码,fromcode是原编码,该函数返回一个转换句柄,供以下两个函数使用。(2)size_ticonv(iconv_tcd,char**inbuf,size_t*inbytesleft,char**outbuf,size_t*outbytesleft);此函数从inbuf中读取字符,转换后输出到outbuf中,inbytesleft用以记录还未转换的字符数,outbytesleft用以记录输出缓冲的剩余空间。(3)inticonv_close(iconv_tcd);此函数

3、用于关闭转换句柄,释放资源。例子1:用C语言实现的转换示例程序/*f.c:代码转换示例C程序*/#include#defineOUTLEN255main(){char*in_utf8="姝e?ㄥ??瑁?";char*in_gb2312="正在安装";charout[OUTLEN];//unicode码转为gb2312码rc=u2g(in_utf8,strlen(in_utf8),out,OUTLEN);printf("unicode-->gb2312out=%sn",out);//gb2312码转为unicode码rc=g2u(in_gb2312,strlen(in_gb2

4、312),out,OUTLEN);printf("gb2312-->unicodeout=%sn",out);}//代码转换:从一种编码转为另一种编码intcode_convert(char*from_charset,char*to_charset,char*inbuf,intinlen,char*outbuf,intoutlen){iconv_tcd;intrc;char**pin=&inbuf;char**pout=&outbuf;cd=iconv_open(to_charset,from_charset);if(cd==0)return-1;memset(outbuf,0,outlen

5、);if(iconv(cd,pin,&inlen,pout,&outlen)==-1)return-1;iconv_close(cd);return0;}//UNICODE码转为GB2312码intu2g(char*inbuf,intinlen,char*outbuf,intoutlen){returncode_convert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);}//GB2312码转为UNICODE码intg2u(char*inbuf,size_tinlen,char*outbuf,size_toutlen){returncode_con

6、vert("gb2312","utf-8",inbuf,inlen,outbuf,outlen);}例子2:用C++语言实现的转换示例程序/*f.cpp:代码转换示例C++程序*/#include#include#defineOUTLEN255usingnamespacestd;//代码转换操作类classCodeConverter{private:iconv_tcd;public://构造CodeConverter(constchar*from_charset,constchar*to_charset){cd=iconv_open(to_charset

7、,from_charset);}//析构~CodeConverter(){iconv_close(cd);}//转换输出intconvert(char*inbuf,intinlen,char*outbuf,intoutlen){char**pin=&inbuf;char**pout=&outbuf;memset(outbuf,0,outlen);returniconv(cd,pin,(size_t*)&inl

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。