在使用libevent开发Http服务接收数据的过程中,发现返回的是unsigned char*,默认的编码UTF-8,如果转为正确的内容呢?
1. unsigned char*转string
unsigned char* pBuf = evbuffer_pullup(req->input_buffer, -1);
vector<unsigned char> vctBuf(pBuf, pBuf + nPostSize);
string strBuf(vctBuf.begin(), vctBuf.end());
另一种做法是new char* 然后用memcpy的,会频繁申请和释放内存,不推荐。上面的方式用的全是栈内存,简单方便。
因为编码是UTF-8,中文是乱码的,需要转一下。
2. unsigned char*转QString
unsigned char* pBuf = evbuffer_pullup(req->input_buffer, -1);
vector<unsigned char> vctBuf(pBuf, pBuf + nPostSize);
string strBuf(vctBuf.begin(), vctBuf.end());
QString strText = QString::fromUtf8(strBuf.c_str());