URL中特殊符號的處理


問題描述

     我們在對接第三方系統的時候通常需要get或post來傳輸數據,但此時如果參數中存在&% #*!包括空格等特殊符號的時候就無法正常請求具體表現在參數獲取不正確或者獲取不到參數,甚至有時候會直接截斷發送的請求。

 

解決方法

     特殊字符在url中不能正常傳輸我們首先肯定是考慮對其進行URL編碼,不同語言url編碼封裝的方法可能有所不同,因為我這里是使用c# 后台跟第三方系統對接 ,所以直接考慮c# 類庫封裝的方法了

    c#中有三種url編碼的方式分別是

    1  HttpUtility.UrlEncode      

    2  Server.UrlEncode

    3  Uri.EscapeUriString

 

     這里就不詳細對比它們的優缺點了  ,因為這里我目的在於問題的解決和記錄,所以只描述一下過程中遇到的問題和該注意的地方,

    1 首先HttpUtility.UrlEncode  對空格的處理是使其變成+ 的符號比如你有一個這樣的字符串 : "下單時間:2017/3/28 23:05:51"  注意其中有一個空格對應生成的字符串是:"%e4%b8%8b%e5%8d%95%e6%97%b6%e9%97%b4%3a2017%2f3%2f28+23%3a05%3a51"  ,空格變成了+符號,所以傳輸的時候應該做相應的處理,

    我這里的解決方法是把編碼后的字符串中的+符號再替換成對應的編碼格式, 如utf8  空格應該編碼成  %20,所以只要把+符號替換成 %20,

  

    2 第二要注意的就是Uri.EscapeDataString 雖然沒有所有的空格變加號的問題但是被編碼的字符串有長度限制,限制的長度32766個字符  超過則會拋出異常  ,其實用方式如下

 

 

 

以上兩種方式默認編碼都是utf8 編碼當然也可以換成其它格式。

 

博主網址:http://www.siyouku.cn

本文永久更細地址:http://siyouku.cn/article/6820.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM