开发者社区> 问答> 正文

在使用oss c++ sdk 时 使用ListObjects返回的中文文件夹乱码

OssClient client(Endpoint, AccessKeyId, AccessKeySecret, conf);

std::string nextMarker = "";
bool a=true;
do {
	/* 列举文件 */
	ListObjectsRequest request(BucketName);
	/* 设置正斜线(/)为文件夹的分隔符 */
	request.setDelimiter("/");
	request.setEncodingType("url");
	request.setPrefix(keyPrefix);
	request.setMarker(nextMarker);
	auto outcome = client.ListObjects(request);
	a = outcome.result().IsTruncated();
	if (!outcome.isSuccess()) {
		/* 异常处理 */
		std::cout << "ListObjects fail" <<
			",code:" << outcome.error().Code() <<
			",message:" << outcome.error().Message() <<
			",requestId:" << outcome.error().RequestId() << std::endl;
		break;	
	}
/*	for (const auto& object : outcome.result().ObjectSummarys()) {
		std::cout << "object" <<
			",name:" << object.Key() <<
			",size:" << object.Size() <<
			",lastmodify time:" << object.LastModified() << std::endl;
	}*/
	for (const auto& commonPrefix : outcome.result().CommonPrefixes()) {
		std::cout << "commonPrefix" << ",name:" << **commonPrefix **<< std::endl;
		

	}
	nextMarker = outcome.result().NextMarker();
	
} while (a);

展开
收起
游客a5sjudaxtgdfu 2020-04-17 16:35:40 1329 0
1 条回答
写回答
取消 提交回答
  • #include #include std::wstring utf8string2wstring(const std::string& str) { static std::wstring_convert< std::codecvt_utf8<wchar_t> > strCnv; return strCnv.from_bytes(str); }

    因为返回的是UTF8格式,所以要进行编码转换。用上面的函数将 object.Key() 转换成wstring ,这样中文就不乱吗了。

    2020-12-18 16:49:12
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载