需要用到iconv库,引入头文件
#include<iconv.h>
int EncodingConvert(const char* charsetSrc, const char* charsetDest, char* inbuf,
size_t inSz, char* outbuf, size_t outSz)
{
iconv_t cd;
char** pin = &inbuf;
char** pout = &outbuf;
cd = iconv_open(charsetDest, charsetSrc);
if (0 == cd)
{
std::cerr << charsetSrc << " to " << charsetDest
<< " conversion not available" << std::endl;
return -1;
}
if (-1 == static_cast<int>(iconv(cd, pin, &inSz, pout, &outSz)))
{
std::cerr << "conversion failure" << std::endl;
return -1;
}
iconv_close(cd);
**pout = '\0';
return 0;
}
std::string GbkToUtf8(const std::string& str)
{
size_t len = str.size() * 2 + 1;
char* temp = new char[len];
if (EncodingConvert("gb2312", "utf-8", const_cast<char*>(str.c_str()), str.size(), temp, len)
> = 0)
{
std::string res;
res.append(temp);
delete[] temp;
return res;
}
else
{
delete[]temp;
return str;
}
}
如果原代码是char类型数据,可以先用std::string str(char)转换格式后进行输出,最后输出用std::cout<<str 作者:技术叆 https://www.bilibili.com/read/cv30365785/?spm_id_from=333.999.0.0 出处:bilibili