1. 程式人生 > >URL 傳參中需要處理的特殊字符

URL 傳參中需要處理的特殊字符

tor 進行 sharp 字符 表示 light decode class 編程

例如實際請求URL如下:

http://www.douwansha.com/mdeditor?data=[{"address":null,"name":"公司名稱=阿裏巴巴集團","id":"12345","priority":null,"tel":null,"urllink":"1","keytype":null,"errortype":"測試項目","errordesc":"過年咯","submit_user":"loongshawn"}]&dize=1&user=loongshawn

服務器返回結果:

"服務器異常:\r\nnet.sf.json.JSONException: Found starting ‘[‘ but missing ‘]‘ at the end. at character 0 of null

 

這個異常很明顯是由於URL的data參數中的name屬性內容包含一個特殊字符”=”,導致data解析JSON異常,這個時候比較簡單的方法就是把特殊字符替換掉,接下來看看URL中都有哪些特殊字符。

特殊字符

  • 1.+ URL 中+號表示空格 %2B

  • 2.空格 URL中的空格可以用+號或者編碼 %20

  • 3./ 分隔目錄和子目錄 %2F

  • 4.? 分隔實際的 URL 和參數 %3F

  • 5.% 指定特殊字符 %25

  • 6.# 表示書簽 %23

  • 7.& URL 中指定的參數間的分隔符 %26

  • 8.= URL 中指定參數的值 %3D

如果傳遞參數中包含上述特殊字符,比較標準的做法是先對參數value進行URLEncoder編碼,然後解析是再利用URLDecoder解碼。

java中URL 的編碼和解碼函數:

  • 編碼:java.net.URLEncoder.encode(String s);

  • 解碼:java.net.URLDecoder.decode(String s);

可能有時候編程方式並不一定遵循標準的做法(依據實際業務而定),比如並沒有利用URL編碼解碼規範,直接是明文傳輸,這個時候可以僅僅針對參數值中的參數進行過濾處理,比如將特殊字符替換掉等。

如下方法,過濾掉特殊字符,但前提是不影響信息的理解。

public static String getUrlReplacedValue(String value){

        String str 
= value.replace("&", "-") .replace("=", "-") .replace("#", "-") .replace("%", "-") .replace("/", "-") .replace("?", "-"); return str; }

URL 傳參中需要處理的特殊字符