linux C gbk utf 8編碼轉換

2021-05-14 09:21:49 字數 722 閱讀 4271

用linux c 下的函式呼叫建立中文目錄、檔案等,字串的編碼格式要求是utf-8格式的。

比如想要使用 int mkdir(const char *pathname, mode_t mode); 建立乙個中文的目錄。那麼pathname的編碼格式要求是utf-8的,而不能是gb3212/gbk的,否則就是亂碼。

那麼如果linux c下如何進行gbk<---->utf-8編碼轉換的編碼裝換的?使用的是iconv函式簇。

其中iconv函式族的標頭檔案是iconv.h,使用前需包含之。

#include

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);

此函式用於關閉轉換控制代碼,釋放資源。

unicode編碼和utf 8編碼詳解

unicode是國際通用編碼,utf 8編碼是unicode編碼在網路之間 主要是網頁 傳輸時的一種 變通 和 橋梁 編碼。utf 8在網路之間傳輸時可以節約資料量。所以,使用作業系統無法搜尋出txt文字。按照utf 8創始人的願望 端 unicode 傳輸 utf 8 端 unicode 但是,後...

編碼(1) unicode,utf 8和其他編碼

1.字符集 ascii字符集,最初的字符集,對應了ansi檔案編碼,乙個字元用乙個位元組表示,嚴格來說這個時候字符集和文字檔案的編碼並沒有必要作為單獨的概念加以區分 從此也可以看出,原來是沒有中間的字符集的抽象的。字符集就是編碼方式,編碼解碼直接對著字符集的對映表即可。二者是乙個概念。西歐字符集 日...

介紹utf8編碼

utf8並不算是一種電腦編碼,而是一種儲存和傳送的格式,如前所述,每個unicode ucs字元都以 2或4個bytes來儲存,看看以下的比較 以 i am chinese 為例 用ansi儲存 12 bytes 用unicode ucs2儲存 24 bytes 2 bytes header 用uc...