iconv 的引數問題

2022-03-04 01:00:08 字數 934 閱讀 8124

void encode_convert(iconv_t& cd, const

char*str, size_t str_len,

std::

string* out);

char* pout =utf_buf;

char* pin = const_cast(str);

size_t from_len =str_len;

size_t to_len = sizeof

(utf_buf);

if (iconv(cd, &pin, &from_len, &pout, &to_len) == (size_t) -1

)

out->assign(utf_buf);

}

這段**沒問題,執行得很好,但後來 kmaxcoding 定義在其它檔案中了,所以我把它作為引數傳遞過來了,但編譯無法過。

只能修改成為這樣

void encode_convert(iconv_t& cd, const

char*str, size_t str_len,

std::

string* out, const

size_t max_coding_size)

out->

assign(utf_buf);

}

但此時就會在轉換後的string中多乙個y 字串。

如果將標黃的**轉換為 memset(utf_buf, 0, sizeof(utf_buf));就會沒問題了,我想應該是轉碼可能沒有加\0什麼的。

在檢視了 在linux下使用iconv轉換字串編碼 的iconv介面函式說明後,我將assign 段修改為

out->assign(utf_buf, sizeof(utf_buf) - to_len);

清淨了。

使用iconv需要注意的問題

stringiconv string in charset string out charset string str 在使用這個函式進行字串編碼轉換時,需要注意,如果將utf 8轉換為gb2312時,可能會出現字串被截斷的情況發生。此時可以使用以下方法解決 author zhxia 1 str i...

iconv 中文截斷問題的解決方法

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!iconv 中文截斷問題的解決方法 今天做了乙個採集程式,原理很簡單,使用curl方法把對方頁面的html獲取分析,然後正則提取需要的資料並儲存在資料庫。由於對方頁面是gb2312編碼,而本地使用的是utf 8編碼。因此在採集後需要進行編碼轉換。使...

iconv 中文截斷問題的解決方法

iconv 中文截斷問題的解決方法 今天做了乙個採集程式,原理很簡單,使用curl方法把對方頁面的html獲取分析,然後正則提取需要的資料並儲存在資料庫。由於對方頁面是gb2312編碼,而本地使用的是utf 8編碼。因此在採集後需要進行編碼轉換。使用了iconv方法進行編碼轉換 iconv 字串按要...