已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在LINUX上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实现,只不过后者是针对文件的,即将指定文件从一种编码转换为另一种编码。 一、利用iconv函数族进行编码转换 iconv函数族的头文在LINUX上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实现,只不过后者是针对文件的,即将指定文件从一种编码转换为另一种编码。 一、利用iconv函数族进行编码转换 iconv函数族的头文件是iconv.h,使用前需包含之。 #include 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 #define OUTLEN 255 main() char *in_utf8 = 姝?瑁?; char *in_gb2312 = 正在安装; char outOUTLEN; /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 #include #define OUTLEN 255 using namespace std; / 代码转换操作类 class CodeConverter private: iconv_t cd; public: / 构造 CodeConverter(const char *from_charset,const char *to_charset) cd = iconv_open(to_charset,from_charset); / 析构 CodeConverter() iconv_close(cd); / 转换输出 int convert(char *inbuf,int inlen,char *outbuf,int outlen) char *pin = &inbuf; char *pout = &outbuf; memset(outbuf,0,outlen); return iconv(cd,pin,(size_t *)&inlen,pout,(size_t *)&outlen); ; int main(int argc, char *argv) char *in_utf8 = 姝?瑁?; char *in_gb2312 = 正在安装; char outOUTLEN; / utf-8-gb2312 CodeConverter cc = CodeConverter(utf-8,gb2312); cc.convert(in_utf8,strlen(in_utf8),out,OUTLEN); cout gb2312 in= in_utf8 ,out= out utf-8 CodeConverter cc2 = CodeConverter(gb2312,utf-8); cc2.convert(in_gb2312,strlen(in_gb2312),out,OUTLEN); cout utf-8 in= in_gb2312 ,out= out endl; linux C 字符集转换,UTF-8,GB2312最近帮朋友写个系统接口的小东东,2个系统字符集不同,一个采用UTF-8,一个采用GB2312,不得已需要转换字符集。转换函数记录如下:#include #include #include #include #define OUTLEN 255main()char *in_utf8 = utf8字符串;char *in_gb2312 = xbexb2xccxacxc4xa3xcaxbd;char outOUTLEN;int rec ;/unicode码转为gb2312码rec = u2g(in_utf8,strlen(in_utf8),out,OUTLEN);printf(unicode-gb2312 out=%sn,out); /gb2312码转为unicode码rec = g2u(in_gb2312,strlen(in_gb2312),out,OUTLEN);printf(gb2312-unicode out=%s n,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,s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 福州市台江区2025-2026学年第二学期五年级语文第八单元测试卷(部编版含答案)
- 安庆市岳西县2025-2026学年第二学期四年级语文期末考试卷(部编版含答案)
- 南昌市进贤县2025-2026学年第二学期三年级语文期末考试卷(部编版含答案)
- 安康地区汉阴县2025-2026学年第二学期四年级语文第七单元测试卷(部编版含答案)
- 项目1 任务3:1.3.3 汽车AI功能的体验分享与讨论
- 2026年食品安全员考试试题与答案
- 企业经营成效分配承诺书4篇范文
- 企业行政管理标准化工作指南
- 2026初中开学收心教育第一课课件
- 商洽新增业务合作商洽函6篇
- 猪屠宰与分割车间设计规范
- 果实和种子课件-四年级下册科学教科版
- 《循环冷却水旁流电化学处理技术规程》
- 禁毒部门污水整治方案
- 市政工程雨水管道验收方案
- Lesson 1 On the Farm (教学设计)-2023-2024学年冀教版(三起)英语三年级下册
- DZ∕T 0270-2014 地下水监测井建设规范
- DL-T5153-2014火力发电厂厂用电设计技术规程
- 金融学基础(第三版)课件:巧用保险
- 高中数学专题讲座课件
- 雅思阅读:雅思阅读复习计划
评论
0/150
提交评论