Android中常用的编码和解码(加密和解密)的问题

 

1. URL Encoding 

  

编码目的是为了在⺴址上可以包含中文等特殊字符
解码是为了把编码后的内容还原成原始的内容
格式如下%9C%3C%F3%98 规则: %hex_byte
就是将实际的字节转换为十六进制进行显示
编码URLEncoder.encode(String str, String charset)
解码 URLDecoder.encode(String str, String charset)

eg.    %E6%88%91%E6%98%AFvhly%EF%BC%8C%E4%BD%A0%E6%98%AF%E8%B0%81%3F 该字符串代表什么内容?

 1  @Override
 2     protected void onCreate(Bundle savedInstanceState) {
 3         super.onCreate(savedInstanceState);
 4         setContentView(R.layout.activity_main);
 5         
 6         /**  解码演示 */
 7         
 8         //解码之前的字符串
 9         String str1= " %E6%88%91%E6%98%AFvhly%EF%BC%8C%E4%BD%A0%E6%98%AF%E8%B0%81%3F";
10         //解码之后的字符串
11         try {
12             String str2= URLDecoder.decode(str1,"UTF-8");
13             Log.v("TAG", "str2="+str2); //str2= 我是vhly,你是谁?
14 
15         } catch (UnsupportedEncodingException e) {
16             // TODO Auto-generated catch block
17             e.printStackTrace();
18         }
19         
20         /** 编码演示*/
21         String str3 = "It's Don!";
22         try {
23             String str4 = URLEncoder.encode(str3, "UTF-8");
24             Log.v("TAG", "str4="+str4); //str4=It%27s+Don%21
25 
26         } catch (UnsupportedEncodingException e) {
27             // TODO Auto-generated catch block
28             e.printStackTrace();
29         }
30     
31     }
View Code

 

2.Base64

       包含大小写英文字母,10个数字,以及= + 的编码格式

 1.Base64能够把二进制的文件转换为文本文件
2.把整个内容全部转换为可以显⽰的字符串
3.包含编码和解码,主要⽤于客户端与服务器传图⽚
4.编码android.util.Base64.encodeToString(byte[], int)
5.解码android.util.Base64.decode(String, int)


常见的编解码工具

    Android 自带 android.util.Base64
   Apache Common Codec 类库 Base64

eg. 5L2g5piv6LCBPw== 这个字符串的内容是什么?

 1 import java.net.URLDecoder;
 2 import java.net.URLEncoder;
 3 
 4 import android.util.Base64;
 5 @Override
 6     protected void onCreate(Bundle savedInstanceState) {
 7         super.onCreate(savedInstanceState);
 8         setContentView(R.layout.activity_main);
 9         
10         /**  解码演示 */
11         
12         //解码之前的字符串
13         String str1= "5L2g5piv6LCBPw==";
14         //解码之后的字符串
15         try {
16             byte[] bytes = Base64.decode(str1, Base64.NO_WRAP);
17             String str2= new String(bytes,"UTF-8");
18             Log.v("TAG", "str2="+str2); //str2=你是谁?
19 
20 
21         } catch (UnsupportedEncodingException e) {
22             e.printStackTrace();
23         }
24         
25         /** 编码演示*/
26         String str3 = "I love Android!";
27         try {
28             String str4 = Base64.encodeToString(str3.getBytes("UTF-8"), Base64.NO_WRAP);
29             Log.v("TAG", "str4="+str4); // str4=SSBsb3ZlIEFuZHJvaWQh
30 
31         } catch (UnsupportedEncodingException e) {
32             // TODO Auto-generated catch block
33             e.printStackTrace();
34         }
35     
36     }
View Code

 

posted on 2014-11-28 12:57  畅遨  阅读(667)  评论(0编辑  收藏  举报

导航