如何解決Http請求參數中加號變空格問題

問題描述:

當使用.NET編寫Winform程序,構建Http Post 請求,並傳遞若干參數給遠程服務器時,如果參數中包含加號'+'等符號時,http請求發送後,服務器收到並解析時,加號會被解碼爲空格。

舉例說明:

若參數中含有:fileName = "[宮崎駿作品全集+Ghibli相關作品].txt"
此時,傳遞到服務器上以後,服務器接收到的數據會變成:[宮崎駿作品全集 Ghibli相關作品].txt

加號會變成空格!
(如果全程都使用的utf-8編碼格式)

錯誤原因:

我沒有深究原因,寬泛的說,就是在傳輸前後過程中,經歷的幾次編碼和解碼標準不同,導致加號、空格等字符的錯誤。

簡單的解決方法:

遇到這種情況時,一種快速的解決方法是: 把參數中所有的加號“+”,替換爲“%2B”即可
(可能這種方法並不好,應該可以採用傳遞前對數據進行某格式的encode,獲取數據時進行decode即可)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章