c 字符集转换

本人开发环境在linux 32位机器上。

 首先是一个字符集转换的列子

#include <sys/types.h>
#include <stdio.h>
#include <string.h>
#include <iconv.h>
#include <stdlib.h>
int main(){
 
 char *inbuf="不能发送相同的楼盘";
 char *outbuf = malloc(100);
 char buf[100] ;
 int ret ;
 
 iconv_t cd;      //iconv型(其实就是个整型变量)
 
 char *pin=inbuf;    //从*inbuf开始读取,最多读取*inbufleft字节-这句将形参的值传给实参
 
 char *pout=outbuf;   //转化后从*outbuf开始写入,最多*outbufleft字节--这句将形参的值传给实参
 
 int lenin = strlen(inbuf);
 printf("lenin%d\n",lenin);
     
 int lenout = 99;
     
 cd=iconv_open("utf-8","gbk"); //gb18030在嵌入式linux系统上是否被支持有待验证,保险期间可换为"gbk" or "gb2312"
 
 if( cd == 0 )
 {
  printf("iconv_open() error!\n");
  exit -1;
 }
 
 memset(outbuf,'\0',100);  //这里清零是否会影响到其他线程在outbuf的数据呢?   
 ret = iconv(cd,&pin,(size_t *)&lenin,&pout,(size_t *)&lenout) ; 
 
 if( ret == -1)   //转换
 {
  printf("iconv() error!\n");
  exit -1;
 }
 printf("%s,%s\n",inbuf,outbuf);

   
 iconv_close(cd);
   
 return 0 ;
}
                                                                                                                                                                                                                                                                                                                         分别对以上函数的介绍

       1.  iconv_open –申请一个字符集转换的描述符。   

iconv_t iconv_open (const char* tocode, const char* fromcode);         

支持一下编码:asicc,ISO8859-x,gbk,utf8  ,EUC-CN      ,ARMSCII-8  ,等等

返回值
iconv_open函数返回一个新申请的转换描述符。出错时,将修改errno并返回(iconv_t)(-1)。

   2.size_t iconv( iconv_t cd,cons                              

2.        

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值