linux下面有時候 字元需要進行編碼轉換(爬蟲將gbk轉為utf-8編碼...),一般可以選擇iconv函式。
終端下面 輸入
man 3 iconv
得到 iconv函式的使用方法。
個人看習慣了,msdn文件之後感覺linux下面的文件的看的不是那麼爽了。
使用iconv函式進行轉碼,一般使用三個函式:iconv_open 、 iconv 、iconv_close三個函式。
iconv_t iconv_open(const char* tocode,const char* fromcode)
終端下面輸入下面命令得到系統支援的編碼:
iconv --list
然後就是轉碼函式了:
size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft,
char **outbuf, size_t *outbytesleft);
具體函式內容可以檢視這個網頁iconv_open iconv iconv_close函式文件
使用完成之後,需要關閉之前開啟的控制代碼 :
int iconv_close(iconv_t cd);
例子:
標頭檔案:ctranstlatestring.h
#ifndef ctranstlatestring_h
#define ctranstlatestring_h
#include #include #include class ctranstlatestring
;#endif // ctranstlatestring_h
檔案:ctranstlatestring.cpp
#include #include "ctranstlatestring.h"
using namespace std;
ctranstlatestring::ctranstlatestring(const char *to_encode , const char *from_encode)
ctranstlatestring::~ctranstlatestring()
const char* ctranstlatestring::translate(const char* from ,size_t flen)
catch(...)
}memset( fromstring , 0 , fromleng );
memcpy(fromstring, from, fromleng);
size_t tlen = flen * 2;
//分類 編碼後的字串空間
if( toleng < tlen +1 )
catch (...)
}memset(tostring, 0, toleng);
return intranlsate(); //字串轉碼
}const char* ctranstlatestring::intranlsate()
return tostring; //注意這裡的返回是重點
}
PHP中文GBK編碼轉UTF 8
iconv 和 mb convert encoding的區別 string mb convert encoding string str,string to encoding mixed from encoding 需要先enable mbstring 擴充套件庫,在 php.ini裡將 exten...
Java 中文字串編碼之GBK轉UTF 8
寫過兩篇關於編碼的文章了,以為自己比較了解編碼了呢?結果今天又結結實實的上了一課。以前轉來轉去解決的問題終歸還是簡單的情形。即iso 8859 1轉utf 8,或者iso 8859 1轉gbk,gb2312之類。這種無損轉換,一行 就搞定。今天遇到了gbk轉utf 8。無論怎麼轉,都是亂碼。一 亂碼...
C語言漢字gbk轉utf 8
一 注意事項 1.請注意漢字內碼 對應字元為 xcc等 和列印出的轉義字元 xcc 的區別!該問題導致我們程式除錯了差不多一整天!見 c語言中轉義字元的使用 2.另外庫函式iconv會把傳入的引數指標移位,這是正常的 請不要認為是自己程式有問題。3.我的終端是utf 8格式,對於其他編碼不能顯示。二...