1.原因
std::string不支持utf8编码,因此在调试器中看到的是乱码,并且使用一些不支持utf8编码的api判断该字符串对应的文件路径时,也会判定失败。所以要想在调试过程中正常显示utf8编码的中文内容,就要把字符串转换成gbk编码
2.解决
string UTF8ToGB(const char* str){string result;WCHAR* strSrc;LPSTR szRes;//获得临时变量的大小int i = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);strSrc = new WCHAR[i + 1];MultiByteToWideChar(CP_UTF8, 0, str, -1, strSrc, i);//获得临时变量的大小i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);szRes = new CHAR[i + 1];WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);result = szRes;delete[]strSrc;delete[]szRes;return result;}
参考链接:/qd1308504206/article/details/83176169