URLEncoder编码
2016-07-12 15:45
155 查看
客户端在进行网页请求的时候,网址中可能会包含非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
四、示例
运行结果:
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中
而直接把中文放到网址中请求是不允许的,所以需要用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中
相关文章推荐
- springmvc+hibernate4+spring3整合
- 8防止重复提交
- 日志
- 半透明窗口中显示标准控件(控件与文字不透明)的实现方案(附源码)
- absolute与margin实现完全居中布局(IE8+)
- CentOs7 安装Tengine 并设置成系统服务,开机自动启动。
- hdu 5207(数论+枚举)
- python 常见问题思考
- java基础八:字符串
- 6拦截器
- perf学习-linux自带性能分析工具
- 一个解决背景切换的shader
- 剑指offer(56)-按之字形顺序打印二叉树
- 手机页面的字体问题
- Codeforces Round #320 (Div. 2) [Bayan Thanks-Round] E 三分
- linux上安装部署activemq
- 5文件上传与下载
- HP-UX 11g RAC安装 记录
- SQL-order by两个字段同时排序
- 类型“GridView”的控件必须放在具有 runat=server 的窗体标记内?