C++ GDAL库获取shp属性字段中文乱码问题(GetFieldAsString())

一:前言:

因工作需要,需要存下shp数据的属性字段和几何信息,但是折腾了一上午,属性字段中文老是乱码,网上搜了很多解决方法大都是在读shp数据前面加上下面这句话

	CPLSetConfigOption("SHAPE_ENCODING", "");

但是我用这方法完全没什么用

二:解决方法

将中文用下面函数转换一下即可

/*!
* @brief UTF8转string
*/
std::string UTF8_To_string(const std::string& str)
{
	int nwLen = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, NULL, 0);
	wchar_t* pwBuf = new wchar_t[nwLen + 1];    //一定要加1,不然会出现尾巴 
	memset(pwBuf, 0, nwLen * 2 + 2);
	MultiByteToWideChar(CP_UTF8, 0, str.c_str(), str.length(), pwBuf, nwLen);
	int nLen = WideCharToMultiByte(CP_ACP, 0, pwBuf, -1, NULL, NULL, NULL, NULL);
	char* pBuf = new char[nLen + 1];
	memset(pBuf, 0, nLen + 1);
	WideCharToMultiByte(CP_ACP, 0, pwBuf, nwLen, pBuf, nLen, NULL, NULL);
	std::string strRet = pBuf;
	delete[]pBuf;
	delete[]pwBuf;
	pBuf = NULL;
	pwBuf = NULL;
	return strRet;
}

上一篇:夺命雷公狗---微信开发12----微信公众平台接口测试帐号


下一篇:POJ 1979 Red and Black (zoj 2165) DFS