1、iconv的含義是將一個抽象的符號的編碼進行轉(zhuǎn)換。

成都網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計、成都網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團成都定制網(wǎng)站等服務(wù)項目。核心團隊均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗,服務(wù)眾多知名企業(yè)客戶;涵蓋的客戶類型包括:玻璃貼膜等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗,同時也獲得了客戶的一致認可!
但是如果一個符號比如“個”,可能在BIG5的編碼中不存在(繁體字中不同)
GBK包含的是簡體字,BIG5包含的是繁體字,Unicode包含全部,
所以
GBK-Unicode,Big5-Unicode (總是OK)
Unicode-GBK (當里面僅包含英文及簡體時OK)
Unicode-BIG5 (當里面僅包含英文及繁體時OK)
GBK-Big5 (基本上不行,除非某些字沒有特別的簡體字)
GBK-Big5是漢字的簡繁轉(zhuǎn)換,不是編碼轉(zhuǎn)換,簡體字轉(zhuǎn)繁體字還有一個問題,一個簡體字可能是對應(yīng)多個繁體字,這種很難轉(zhuǎn)換正確。繁體字轉(zhuǎn)換成簡體字相對難度低。
2、#include iconv.h
size_t iconv(iconv_t cd,
char **inbuf, size_t *inbytesleft,
char **outbuf, size_t *outbytesleft);
函數(shù)原型, outbuf是一個 char **類型
在函數(shù)手冊中:
The iconv() function converts one multibyte character at a time, and for each character conversion it increments *inbuf and decrements
*inbytesleft by the number of converted input bytes, it increments *outbuf and decrements *outbytesleft by the number of converted
output bytes
#include iconv.h
size_t iconv(iconv_t cd,
char **inbuf, size_t *inbytesleft,
char **outbuf, size_t *outbytesleft);
你看函數(shù)原型, outbuf是一個 char **類型
在函數(shù)手冊中:
The iconv() function converts one multibyte character at a time, and for each character conversion it increments *inbuf and decrements
*inbytesleft by the number of converted input bytes, it increments *outbuf and decrements *outbytesleft by the number of converted
output bytes
也就是說,當你執(zhí)行過iconv以后,*outbuf所指向的內(nèi)存空間位置已經(jīng)被改掉了, 所以你任何時候去讀*outbuf, 都是讀不到任何iconv后的數(shù)據(jù)的(都在*outbuf這個指針前面放著呢)。
所以你應(yīng)該 預(yù)先備份outbuf的數(shù)據(jù),
比如 char k[1000]; char *outb = k; 執(zhí)行完iconv(t,inb,inl,outb,outl)以后,你去讀k數(shù)組就可以了。
除了iconv敕令我們在linux體系下的man page的第三節(jié)還可以看到一組iconv函數(shù)。它們分別是 iconv_t iconv_open(const char *tocode, const char *fromcode); size_ticonv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft); int iconv_close(iconv_t cd); iconv_open函數(shù)用來打開一個編碼轉(zhuǎn)換的流iconv函數(shù)的感化是實際進行轉(zhuǎn)換iconv_close函數(shù)的感化就是封閉這個流。實際用法拜見下面的例子下面是一個將UTF-8碼轉(zhuǎn)換成GBK碼的例子我們假設(shè)已經(jīng)有了一個uft8編碼的輸入緩沖區(qū)inbuf以及這個緩沖區(qū)的長度inlen。 iconv_t cd = iconv_open( \"GBK\", \"UTF-8\"); char *outbuf = (char *)malloc(inlen * 4 ); bzero( outbuf, inlen * 4); char *in = inbuf; char *out = outbuf; size_t outlen = inlen *4; iconv[b]cd,
新聞標題:iconv函數(shù)c語言,iconv編譯
新聞來源:http://chinadenli.net/article1/dsgcjod.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、App設(shè)計、微信小程序、定制開發(fā)、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)