問題描述:
當使用.NET編寫Winform程序,構建Http Post 請求,並傳遞若干參數給遠程服務器時,如果參數中包含加號'+'等符號時,http請求發送后,服務器收到並解析時,加號會被解碼為空格。
舉例說明:
若參數中含有:fileName = "[宮崎駿作品全集+Ghibli相關作品].txt"
此時,傳遞到服務器上以后,服務器接收到的數據會變成:[宮崎駿作品全集 Ghibli相關作品].txt
加號會變成空格!
(如果全程都使用的utf-8編碼格式)
錯誤原因:
我沒有深究原因,寬泛的說,就是在傳輸前后過程中,經歷的幾次編碼和解碼標准不同,導致加號、空格等字符的錯誤。
簡單的解決方法:
遇到這種情況時,一種快速的解決方法是: 把參數中所有的加號“+”,替換為“%2B”即可
(可能這種方法並不好,應該可以采用傳遞前對數據進行某格式的encode,獲取數據時進行decode即可)
http://blog.csdn.net/FairyStepWGL/article/details/52287963