URLEncoder編碼演算法

來源:互聯網
上載者:User

標籤:字元轉換   rac   src   分享   get請求   複製   bsp   運行   樣本   

轉載:http://www.cnblogs.com/xqxacm/p/4888062.html

 

一、為什麼要用URLEncoder

用戶端在進行網頁請求的時候,網址中可能會包含非ASCII碼形式的內容,比如中文。

而直接把中文放到網址中請求是不允許的,所以需要用URLEncoder編碼地址,

將網址中的非ASCII碼內容轉換成可以傳輸的字元

 

不會被編碼的內容

1.大寫字母A-Z

2.小寫字母a-z

3.數字 0-9

4.標點符 - _ . ! ~ * ‘ (和 ,)

 

 

二、編碼原理

1、將需要轉換的內容(ASCII碼形式之外的內容),用十六進位標記法轉換出來,並在之前加上%開頭

eg:  0x9c  URLEncoder --> %9c

2、內容中的空格‘ ’ ,全部用+代替

3、註:與Hex不同,Hex是將所有的字元轉換為16進位表示,而URLEncoder是將ASCII碼集之外的轉換為%加上相應的16進位,而ASCII碼集內的字元不進行處理

 

三、應用情境

1、所有的GET請求

2、網址中有中文等情況

3、POST請求,所有的Key和Value在提交之前都要經過URLEncoder

 

四、樣本

try {
String a = URLEncoder.encode("a", "UTF-8");
Log.i("encode","a 進行URLEncoder編碼後-->"+a );
String b = URLEncoder.encode("a中", "UTF-8");
Log.i("encode","a中 進行URLEncoder編碼後-->"+b );

String decode = nURLDecoder.decode("a%E4%B8%AD", "UTF-8");
Log.i("encode","a%E4%B8%AD 進行URLDecoder解碼後-->"+decode);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

運行結果:

10-17 07:33:14.357 1012-1012/com.xqx.encrypsthow I/encode﹕ a 進行URLEncoder編碼後-->a
10-17 07:33:14.367 1012-1012/com.xqx.encrypsthow I/encode﹕ a中 進行URLEncoder編碼後-->a%E4%B8%AD
10-17 07:33:14.377 1012-1012/com.xqx.encrypsthow I/encode﹕ a%E4%B8%AD 進行URLDecoder解碼後-->a中

可以看出 字元‘a‘ 並沒有編碼  而 中文 ‘中‘ 進行了編碼

與URLEncoder編碼對應的是URLDecoder解碼 

可以看出 "a中"--編碼-->"a%E4%B8%AD"--解碼-->"a中"

URLEncoder編碼演算法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.