URLDecoder: Illegal hex characters in escape (%)

以下圖所示,手機端在進行搜索商品的時候,若是是中文而且是這個商品名稱中含有%,點擊搜索的時候就會報錯, 後臺出現的是URLDecoder: Illegal hex characters in escape (%)java

手機端android是這樣寫的:android

結果手機端給後臺java發送請求的時候,java接受到請求後,就會報URLDecoder: Illegal hex characters in escape (%)這個異常,其實咱們知道 在Java中,咱們會常常對一些中文字符進行URL編碼,這樣的就能夠在數據傳遞中解決中文亂碼的現象 ,因此就使用了URLEncoder.encode("中文搜索字符串","編碼") 來對中文進行編碼,而java後臺進行解碼, 但是咱們沒有想到的是,有些特殊字符URLEncoder若是不作處理,那麼就會出現異常,今天我將這種異常的處理方式分享以下:編碼

其解決的辦法是:十六進制值spa

    如下8個特殊字符URL編碼沒有對其進行轉碼 十六進制值
1. + URL 中+號表示空格 %2B
2. 空格 URL中的空格能夠用+號或者編碼 %20
3. / 分隔目錄和子目錄 %2F
4. ? 分隔實際的 URL 和參數 %3F
5. % 指定特殊字符 %25
6. # 表示書籤 %23
7. & URL 中指定的參數間的分隔符 %26
8. = URL 中指定參數的值 %3D

 %用%25來替代code

若是這種方法解決不了問題,那麼採起第二套方案, 偷樑換柱法。ci

android 發送請求的時候,對請求參數searchimgtext進行處理字符串

將%用<percentage>來替代,java後臺進行偷樑換柱還原table

這樣就能解決搜索字符串中含有%的問題! 目前網上尚未一個成熟的解決方案,但願個人這2種方法對您有所幫助!後臺

相關文章
相關標籤/搜索