Android 中URLEncoder编码器和URLDecoder解码器的使用!

时间:2024-05-23 12:47:12

一、【说明:为什么要进行URLEncoder编码?】

通常我们客服端在进行网络请求的时候,网址中会出现非ASCll码中的字段,比如说常有的中文、?、&等特殊字符,如果将这些字符直接向前到网址中访问是会出现错误的,那么这样就要借助URLEncoder对特殊字符进行编码操作了,它可以将特殊字符转换为可以正常传输的字符。

*附加一张ASCll码表供参考:

Android 中URLEncoder编码器和URLDecoder解码器的使用!

二、编码规则

在编码的时候,保留所有英文字母,数字,以及特定的字符,(这些字符全部都是ASCII中的),除此之外将会转换为十六进制标识,并且在每一个十六进制之前加上%,内容中的' '空格,全部采用加号+替换

例如:

0x666——> 通过URLEncoder编码器编码为——>%666

赵日天?&?——> 通过URLEncoder编码器编码为——>%E8%B5%B5%E6%97%A5%E5%A4%A9%3F%26%3F


三、一般在哪里会用到解码器呢?

通常我们在进行网络请求的时候,如get请求,和post请求中的键值对(key,value),网址中出现中文情况等在提交前都要进行URLEncoder转码操作!


四、代码中实现【抽取一个工具类,随时可以调用】

①——比较简单,就直接上代码了!

public class URLEncodeing {

    /**
     * URLEncoder编码
     */
    public static String toURLEncoded(String paramString) {
        if (paramString == null || paramString.equals("")) {
            return "";
        }
        try {
            String str = new String(paramString.getBytes(), "UTF-8");
            str = URLEncoder.encode(str, "UTF-8");
            return str;
        } catch (Exception localException) {
        }
        return "";
    }

    /**
     * URLDecoder解码
     */
    public static String toURLDecoder(String paramString) {
        if (paramString == null || paramString.equals("")) {
            return "";
        }
        try {
            String url = new String(paramString.getBytes(), "UTF-8");
            url = URLDecoder.decode(url, "UTF-8");
            return url;
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return "";
    }
}

②——来用一个小demo验证下效果:

String name = "赵日天?&?";

//进行URLEncoder转码
String n = URLEncodeing.toURLEncoded(name);
Log.i("URLEncoded", "编码后的结果: " + n);

//进行URLDecoder解码
String s = URLEncodeing.toURLDecoder(n);
Log.i("URLDecoder", "解码后的结果: " + s);

③——我们来看看打印的日志:

I/URLEncoded: 编码后的结果: %E8%B5%B5%E6%97%A5%E5%A4%A9%3F%26%3F

I/URLDecoder: 解码后的结果: 赵日天?&?


可以看到,编码前属性为:赵日天?&?

通过编码器转码后得到了:%E8%B5%B5%E6%97%A5%E5%A4%A9%3F%26%3F

我们在通过解码器解码得到以前的属性:赵日天?&?