gbk轉utf 8 iconv 編碼轉換

2021-07-03 22:05:20 字數 1716 閱讀 2560

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格式,對於其他編碼不能顯示。二...