linux下使用iconv库来将中文字符转换成utf8
#include <iconv.h>
#include <string>
std::string GBKToUtf8(const std::string& gbkStr)
{
iconv_t cd = iconv_open("UTF-8", "GBK");
if (cd == (iconv_t)-1)
{
LOG_ERROR("iconv_open fail");
return "";
}
std::string outStr(gbkStr.size() * 4,0);
size_t inBytesLeft = gbkStr.size();
size_t outByteLeft = outStr.size();
char* inBuf = (char*)gbkStr.c_str();
char* outBuf = (char*)outStr.c_str();
/*
cd:由 iconv_open() 返回的转换描述符,它指定了源编码和目标编码。
inbuf:指向输入数据的指针的指针。在调用 iconv() 之前,这个指针应该指向要转换的数据的起始位置。在函数调用后,它将被更新为指向尚未转换的数据的下一个位置。
inbytesleft:指向一个 size_t 变量的指针,该变量表示 inbuf 中剩余的字节数。在调用 iconv() 之前,这应该设置为输入数据的总字节数。函数调用后,它将被更新为剩余未转换的字节数。