- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 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;
您可能关注的文档
- -NET和J2EE的全面比较.doc
- (K-01)电动门及执行机构的安装调试.doc
- ()闸门安装工程施工方案.doc
- (A2O法)66万立方米每天新建临淄城市污水处理厂初步设计.doc
- (李双平)AutoPFA解决管路系统恒定流瞬变流的特征线方法应用.doc
- 01-李键-皇冠轿车自动变速器无倒档故障诊断与排除.doc
- -复合材料论文.doc
- 004施工升降机安装 工程企业技术标准.doc
- 02外研社英语七下NSE Module 2教案teaching plan.doc
- 01V自动变速器工作原理及传递路线.doc
- 2025年山东省济南市单招(语文)测试模拟题库精编.docx
- 2025年安徽省蚌埠市选调生考试(行政职业能力测验)综合能力测试题及答案1套.docx
- 2025年安徽黄梅戏艺术职业学院单招语文测试题库最新.docx
- 2025年安徽省宣城市事业单位招聘考试(职业能力倾向测验)题库参考答案.docx
- 2025年安徽省阜阳市选调生考试(公共基础知识)综合能力题库完整版.docx
- 2025年宣化科技职业学院单招语文测试模拟题库及答案参考.docx
- 2025年安徽省芜湖市单招语文测试题库精编.docx
- 2025年初级经济师之初级经济师人力资源管理题库500道及1套参考答案.docx
- 2025年国家电网招聘之电网计算机题库500道附完整答案(典优).docx
- 2025年安徽省芜湖市单招(语文)测试题库学生专用.docx
文档评论(0)