void encode_convert(iconv_t& cd, constchar*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, constchar*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 字串按要...