c++中的轉碼函式
阿新 • • 發佈:2019-01-30
iconv_open函式
iconv_open——申請一個字符集轉換的描述符
#include <iconv.h>
iconv_t iconv_open(const char* tocode,const char* fromcode)
描述:
iconv_open()函式申請一個轉換描述符,轉換字元序列從編碼fromcode到編碼tocode
轉換描述符包含轉換狀態,呼叫iconv_open建立以後,轉換狀態處於初始狀態,呼叫iconv函式以後改變轉換描述符的轉換狀態,(意味著轉換描述符不能在多執行緒中同時使用)
返回值:
iconv_open函式返回一個新申請的轉換描述符,出錯時,返回( iconv_t)-1;
如果遇到了一些問題,可以自行進行(char *)轉換。int code_utf8_gbk(char *inbuf,size_t inlen,char *outbuf,size_t outlen) { iconv_t cd; int rc; char **pin = &inbuf; char **pout = &outbuf; cd = iconv_open("GBK","UTF8"); //第一步先確定編碼格式,返回轉換描述符 if (cd==0) return -1; memset(outbuf,0,outlen); if (iconv(cd,pin,&inlen,pout,&outlen) == -1) //第二部把想要轉化的字串pin和想要輸出的字串pout放到剛剛申請的轉換描述符中中進行轉換 return -1; iconv_close(cd); //關閉描述符 return 0; } <span style="font-family:Times New Roman;">int main() { char buf[256]="你好"; char buff[256]=""; code_utf8_gbk(buf,1024,buff,1024); //呼叫函式 } </span>
不管什麼編碼格式,只要把編碼格式和想要的格式填入函式就可以了。