以下圖所示,手機端在進行搜索商品的時候,若是是中文而且是這個商品名稱中含有%,點擊搜索的時候就會報錯, 後臺出現的是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種方法對您有所幫助!後臺