Linux 字符集轉化

2021-09-08 01:30:37 字數 1878 閱讀 1708

命令列"

iconv --list

" 檢視linux作業系統支援的字符集

iconv_open    設定字符集轉化

--iconv_t iconv_open(const

char *tocode, const

char *fromcode);

--引數tocode目標字符集的字串

--引數fromcode源字符集的字串

--函式成功返回描述符,失敗返回-1

,並且設定errno

--開啟後,必須使用iconv_close()函式關閉描述符

iconv    將inbuf字符集的字串轉化成outbuf新字符集下的字串

--size_t iconv(iconv_t cd,char **inbuf, size_t *inbytesleft,char **outbuf, size_t *outbytesleft);

--引數cd表示iconv_open()函式返回的描述符

--引數inbuf需要轉化的字串的指標

--引數inbytesleft需要轉化字串長度的指標

--引數outbuf目標字串的指標

--引數outbytesleft目標字串長度的指標必須設定為目標字串的最大長度

--函式失敗返回-1,並且設定errno

//

字符集轉碼 gbk--utf-8

#include #include

#include

#include

#include

#include

int gbktoutf8(char *src, size_t *srclen, char *dest, size_t *destlen)

//將gbk字符集轉化成utf-8字符集

iconv_t cd = iconv_open("

utf8

", "

gbk"

);

if (cd == (iconv_t)-1

)

size_t rc = iconv(cd, &src, srclen, &dest, destlen);

if (rc < 0

)

iconv_close(cd);

return0;

}int main(int arg, char *args)

//讀乙個windows檔案

file *pfr =null;

pfr = fopen(args[1], "r"

);

if (pfr ==null)

char srcbuf[1024] = ;

size_t srclen = 0

;

char destbuf[1024] = ;

size_t destlen = 0

;

//read the file

while (!feof(pfr))

printf("%s

",destbuf);

memset(destbuf,

0,sizeof

(destbuf));

memset(srcbuf,

0,sizeof

(srcbuf));

}fclose(pfr);

return0;

}

windows系統下的文字檔案一般都是ucs-2字符集或者gbk字符集

字符集轉化 curses

linux字串轉化使用方法 第一步 iconv open 目標字符集,源字符集 第二步 iconv 實現字符集轉化 第三步 iconv close 關閉iconv 命令 iconv list 顯示系統中支援的字符集 makefile suffixes c o cc gcc srcs mydaemon...

字符集轉化 curses

linux字串轉化使用方法 第一步 iconv open 目標字符集,源字符集 第二步 iconv 實現字符集轉化 第三步 iconv close 關閉iconv 命令 iconv list 顯示系統中支援的字符集 makefile suffixes c o cc gcc srcs mydaemon...

mysql字符集轉化關係

表的字符集 其實是字段的字符集 客戶端字符集 set names 的這個字符集 文字的字符集 可以理解為在web介面中的charset 這個字符集,或者是ssh terminal終端的字符集下輸入的文字的格式 有如下的關係 1 當表的字符集是gbk或者utf8時,客戶端和文字的字符集同時為gbk或者...