1. 程式人生 > >如何解決Http請求引數中加號變空格問題

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

問題描述:

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

舉例說明:

若引數中含有:fileName = "[宮崎駿作品全集+Ghibli相關作品].txt" 此時,傳遞到伺服器上以後,伺服器接收到的資料會變成:[宮崎駿作品全集 Ghibli相關作品].txt 加號會變成空格! (如果全程都使用的utf-8編碼格式)

錯誤原因:

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

簡單的解決方法:

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