C++ CAtlNavigateData无法处理诸如+;

C++ CAtlNavigateData无法处理诸如+;,c++,special-characters,atl,C++,Special Characters,Atl,我捕获发布的包,并找到发布数据 name=”“,它应该是name=“+++”。不SetPostData(…)无法处理特殊符号。我怎样才能避免这种情况 谢谢斯奈泽的回答。ATL是否提供了执行此操作的API?您需要对字符串进行URL编码,因此将“+”替换为“%2B” CAtlNavigateData navData; CStringA m_strForm = "name=+++&priv=1&password="; navData.SetSocketTimeout(m_nMilliS

我捕获发布的包,并找到发布数据
name=”“
,它应该是
name=“+++”
。不
SetPostData(…)
无法处理特殊符号。我怎样才能避免这种情况


谢谢斯奈泽的回答。ATL是否提供了执行此操作的API?

您需要对字符串进行URL编码,因此将“+”替换为“%2B”

CAtlNavigateData navData;
CStringA m_strForm = "name=+++&priv=1&password=";
navData.SetSocketTimeout(m_nMilliSecond);
navData.SetMethod(ATL_HTTP_METHOD_POST); 
navData.SetPostData((BYTE*)(LPSTR)(LPCSTR)m_strForm, m_strForm.GetLength(), QHTTP_FORM_URLENCODE); 

有关更多信息,请查看

是否有URL编码API?需要我自己写吗?非常感谢!大西洋?()
CStringA m_strForm = "name=%2B%2B%2B&priv=1&password=";