1. 程式人生 > >使用URLEncoder、URLDecoder進行URL參數的轉碼與解碼

使用URLEncoder、URLDecoder進行URL參數的轉碼與解碼

import encoder coder 鍵值對 str enc abc 地址 imp

url參數的轉碼與解碼

import java.net.URLDecoder;

import java.net.URLEncoder;

String strTest = "?=abc?中%1&2<3,4>";
strTest = URLEncoder.encode(strTest, "UTF-8");
System.out.println(strTest);
strTest = URLDecoder.decode(strTest,"UTF-8");
System.out.println(strTest);

執行結果:

%3F%3Dabc%3F%E4%B8%AD%251%262%3C3%2C4%3E

?=abc?中%1&2<3,4>

1. 問題的引出

在Restful的服務設計中,查詢某些信息的時候,一般的URL地址設計為: get /basic/service? keyword=歷史 , 之類的URL地址。 但是,在實際的開發和使用中,確是有亂碼情況的發生,在後臺的讀取keyword信息為亂碼,無法正確讀取。

2. 亂碼是如何產生的?

由於我們利用URL傳遞參數這種方式是依賴與瀏覽器環境中的,也就是說URL及URL中包含的各個key=value格式的傳遞參數鍵值對參數是在瀏覽器地址欄中的處理原理處理相應編碼後傳遞至後臺進行解碼的。 由於我們沒有進行任何處理,此時javascript請求URL並傳參數存在中文時(也就是說輸入框中輸入中文時),對URL的中文參數進行編碼是按照瀏覽器機制進行編碼的。此時編碼存在亂碼問題。

使用URLEncoder、URLDecoder進行URL參數的轉碼與解碼