1. 程式人生 > >java對URL中含有的特殊字元"&"的處理

java對URL中含有的特殊字元"&"的處理

1、問題描述:最近在做java匯出檔案到excel專案中遇到請求的URL包含引數&的時候,匯出的檔案裡面內容為空,什麼都沒有。

2、問題排查:首先我檢視專案執行的日誌,發現打印出來的錯誤資訊是空指標異常java.lang.NullPointException.然後發現頁面上是有資訊不應該是空指標異常。於是我把請求的引數資訊在本地測介面,發現匯出的excel檔案中有資料,正常顯示。於是我猜測可能與URL請求引數中有特殊字元“&”的原因。於是我在網上查詢url特殊字元的處理,發現如下資訊。

在url中直接使用一些特殊字元,在伺服器端接收的時候經常出現數據丟失的情況。 
那麼哪些字元能夠直接被伺服器識別,哪些有不能呢? 
字元“a-z”,”A-Z”,”0-9”,”.”,”-“,”_”,”*”都會直接被伺服器識別,維持原值。 
然而,字元”+”,”/”,”?”,”%”,”#”,”&”,”=”都將被轉碼。那麼我們就需要轉碼來讓伺服器進行識別。

3、問題解決: 

“&” 用來表示url中指定的引數間的分割符 轉化%26

我發現前端頁面返回給後臺的url中含有“&”引數變為%26,後臺需要解碼,將“%26”變為&去資料庫查詢才會正確。

java對url進行解碼操作:

       String urlData=java.net.URLDecoder.decode(strUrl,”UTF-8”);