我在Windows,C++和Win32上使用Visual Studio 2015。我有一個包含空格和其他不安全字符的URL。如果我將未轉義的URL粘貼到郵差中,郵差正確地轉義它們並且請求起作用。但是,如果我將未轉義的URL放入HttpOpenRequest(),則接收系統中檢測到的某些字符(但不是全部)會被轉義。什麼字符自動通過C++ Windows HttpOpenRequest()轉義?
原件: https://nsw.redacted.com/ScheduledActivitys;zoneId=urn:www.dec.nsw.gov.au:school:8481;contextId=current?where=[(//ScheduledActivitys/ScheduledActivity/ActivityDate> = 「2017年8月11日」)和(// ScheduledActivitys/ScheduledActivity/ActivityDate < = 「2017年8月11日」)]
的Wininet :
https://nsw.redacted.com/ScheduledActivitys;zoneId=urn:www.dec.nsw.gov.au:school:8481;contextId=current?where=[(//ScheduledActivitys/ScheduledActivity/ActivityDate> = 「2017年8月11日」)%20於是20%(// ScheduledActivitys/ScheduledActivity/ActivityDate < = 「2017年8月11日」)]
所以我的問題是:我該怎麼要做 - 逃離字符mysel f,還是依靠Win32庫來逃避它們,或者嘗試在Win32 Wininet庫中解決未完成的實現?它會被URL編碼兩次嗎?而在其他閱讀中,您似乎不應該逃避URL的「查詢」部分('?'之後的部分) - 這種建議是否不正確? (以及哪些字符被轉義,爲什麼微軟可以轉義一些而不是其他轉義?)