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.        

發佈了15 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章