JAVA URLEncoder 與URLDecoder 問題

今天發現兩個關於java URL編碼解碼的誤區:

1:URLEncoder 進行編碼兩次 值是一樣的 ?

 

String aa="測試";
String test=URLEncoder.encode(aa,"UTF-8");
System.out.println(test);
System.out.println(URLEncoder.encode(test,"UTF-8"));

 output:

 

 

%E6%B5%8B%E8%AF%95
%25E6%25B5%258B%25E8%25AF%2595

 原來URLEncoder  進行編碼時使用%作爲轉義標記,除了字符"a"-"z","A"-"Z","0"-"9",".","-","*",和"_"  ,空格轉換爲加號 (+) 外,都轉換成"%xy"的形式,xy是兩位16進制的數值;

 

 無論什麼編碼 百分號還是會編碼爲%25 這樣的話無論編碼多少次結果都會不一樣。

 

2:URLDecoder 解碼漢字會與原文不同?

如上述所示:URLDecoder 解碼會找+ 號和%xy 進行解碼,其他值都會不變。所以下面程序是

String aa="測試+測試%25";
String test2=URLDecoder.decode(aa,"UTF-8");
System.out.println(test2);

  output:

測試 測試%

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章