• 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
  • 相关阅读:
    将vs2010换成vs2012的主题
    写了个油猴脚本
    Myeclipse10下的access数据库配置
    点击按钮触发声音(xaml实现)
    自定义的可拖动窗体
    在博客添加时钟
    定时器写的闪光字
    C语言I博客作业02
    c语言|博客作业02
    关于软件工程的一些疑问
  • 原文地址:https://www.cnblogs.com/d-on/p/4115600.html
Copyright © 2020-2023  润新知