一、【说明:为什么要进行URLEncoder编码?】
通常我们客服端在进行网络请求的时候,网址中会出现非ASCll码中的字段,比如说常有的中文、?、&等特殊字符,如果将这些字符直接向前到网址中访问是会出现错误的,那么这样就要借助URLEncoder对特殊字符进行编码操作了,它可以将特殊字符转换为可以正常传输的字符。
*附加一张ASCll码表供参考:
二、编码规则
在编码的时候,保留所有英文字母,数字,以及特定的字符,(这些字符全部都是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
我们在通过解码器解码得到以前的属性:赵日天?&?