一種另類的解決URL中文亂碼問題--對中文進行加密、解密處理


      情景:在資源調度中,首先用戶需要選擇工作目標,然后跟據選擇的工作目標不同而選擇不同的賬號和代理ip。處理過程如下:點擊選擇賬號,在js中獲取工作目標對工作目標進行兩次編碼(encodeURI(encodeURI(gzmb))),在后台,對工作目標進行解碼,然后構建URL。

      如下:

1 String gzmb = URLDecoder.decode(request.getParameter("gzmb"), "UTF-8");
2 Stringurl = "/wlzh/queryPageList.action?accountO.zt=1&accountO.gzmb="+gzmbJiami+"&accountO.accountIsYx=1";

      如圖

 

      可知解碼是成功的。但是最后得到的結果卻是將所有的賬號全部選擇出來,並沒有選擇對應工作目標的賬號。查看后台。URL跳轉得到的工作目標值如下所示的:


      在這里我立馬想到URL中文亂碼,於是我在后台進行解碼操作。但是不知道為什么,換了幾種辦法都不可以。在這里我想到了以前的辦法,通過js兩次編碼,重構URL。所以在后台我將工作目標傳遞出來,然后通過js兩次編碼,重新構建URL。做到這里時我發現,這不就是一開始的么?既然這樣,第一步為什么需要解碼呢,直接傳遞過來不就可以了么?將第一步的解碼去掉,還真的可以。在進行測試,ie7以上的、火狐、谷歌,唯獨ie6不可以(這個原因不知道為什么?求解釋)。在這里我只能想到一種解決辦法了,使用form表單來進行處理。雖然可以成功,但是這是萬不得已的辦法。

      有些東西只要你放在心上,過段時間后你一定可以想到一種解決辦法”。下班后在車上突然想到了一種另類的辦法—在后台對工作目標進行加密操作,賦值給url,然后在另外一邊進行解密操作不就可以了。如下

1 //構建賬號選擇條件
2 
3         String gzmb= URLDecoder.decode(request.getParameter("gzmb") == null ? "" : request.getParameter("gzmb"), "utf-8");
4        String gzmbJiami = DecodeUtils.getJiamiData(gzmb);
5        Stringurl = "/wlzh/queryPageList.action?accountO.zt=1&accountO.gzmb="+gzmbJiami+"&accountO.accountIsYx=1";

       URL如下所示:


      在那邊進行解密操作

1 String gzmbJiemi = DecodeUtils.getJiemiData(accountO.getGzmb());
2 accountO.setGzmb(gzmbJiemi);
3 PageResultInfo<Account_Bean>pageResultInfo = service.queryAccountPageResultBy(accountO , pageInfo,user);

      得到gzmb值如下所示

 

      注:DecodeUtils是一個功能非常強大的加密解密的工具類。

      這里所提供的並不是什么高深的技術,只是提供一種另類的解決方法。這個事情告訴了我,沒有做不到的事情,只有想不到的辦法。

 


免責聲明!

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



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