2010-11-24 17:18:58
| 分類:
linux
| 標籤:|字型大小
大中小訂閱
iconv_t iconv_open(const char *tocode, const char *fromcode);
size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft);
int iconv_close(iconv_t cd);
iconv_open函式用來開啟乙個編碼轉換的流,iconv函式的作用是實際進行轉換,iconv_close函式的作用就是關閉這個流。實際用法參見下面的例子,下面是乙個將utf-8碼轉換成gbk碼的例子,我們假設已經有了乙個uft8編碼的輸入緩衝區inbuf以及這個緩衝區的長度inlen。
iconv_t cd = iconv_open( "gbk", "utf-8");
char *outbuf = (char *)malloc(inlen * 4 );
bzero( outbiuf, inlen * 4);
char *in = inbuf;
char *out = outbuf;
size_t outlen = inlen *4;
iconv(cd, &in, (size_t *)&inlen, &out,&outlen);
outlen = strlen(outbuf);
printf("%s\n",outbuf);
free(outbuf);
iconv_close(cd);
非常值得注意的地方是:
iconv函式會修改引數in和引數out指標所指向的地方,也就是說,在呼叫iconv函式之前,我們的in和inbuf指標以及out和outbuf指標指向的是同一塊記憶體區域,但是呼叫之後out指標所指向的地方就不是outbuf了,同理in指標。所以要
char *in = inbuf;
char *out = outbuf;
另存一下,使用或者釋放記憶體的時候也要使用原先的那個指標outbuf和inbuf。
附demo:
#include#include#includeusing namespace std;
int main()
else
ifstream fp("1.html"); 為utf8格式檔案
char * inbuf = new char[1000] ;
string s;
while(getline(fp,s))
iconv_close(cd);
return 0;
}
iconv 檔案編碼轉換
linux shell 配置檔案中預設的字符集編碼為utf 8 utf 8是unicode的一種表達方式,gb2312是和unicode都是字元的編碼方式,所以說gb2312跟utf 8的概念應該不是乙個層次上的。在linux上進行編碼轉換時,可以利用iconv命令實現,這是針對檔案的,即將指定檔案...
iconv 檔案編碼轉換
linux shell 配置檔案中預設的字符集編碼為utf 8 utf 8是unicode的一種表達方式,gb2312是和unicode都是字元的編碼方式,所以說gb2312跟utf 8的概念應該不是乙個層次上的。在linux上進行編碼轉換時,可以利用iconv命令實現,這是針對檔案的,即將指定檔案...
linux 編碼型別轉換 iconv
用途說明 iconv命令是用來轉換檔案的編碼方式的 convert encoding of given files from one encoding to another 比如它可以將utf8編碼的轉換成gb18030的編碼,反過來也行。jdk中也提供了類似的工具native2ascii。linu...