URL编码

什么是URL编码? 当浏览器访问www服务器上的网页文件时,需要使用HTTP协议进行通信,在HTTP协议中,浏览器不能向服务器直接传递某些特殊字符,就必须对这些字符进行URL编码再传送,其规则如下:
 1.将空格转换成加号(+);
 2.对0~9,a~z,A~Z之间的字符保持不变;
 3.对于其他的所有字符,用这个字符的当前字符集编码在内存中的十六进制格式表示,并在每个十六进制字节前加上一个百分号"%",例如,字符"+"用%2B表示,每个只用GB2312编码的中文字符在内存中的占两个字节,字符"中"用%D6%D0表示.值得注意的是,同一个中文字符在不同的字符集编码方式下,在内存中的编码值也是不一样的,一个字符的URL编码是针对字符在内存中的编码值而言的,采用不同编码的同一个字符的URL编码结果是不一样的.

 在JAVA API中的java.net包中提供了URLEncoder和URLDecoder两个类,供我们方便实现URL编码和解码.下面来看几个小例子:
 1.对于空格也可以直接使用其十六进制编码方式,即用%20表示,而不是转换成+号,按照上面说的第三条,很显然%20是可以解码成空格的.如下两个URL字符串的效果是一样的:
http://www.baidu.com/search.html?name=a+b&password=123
http://www.baidu.com/search.html?name=a%20b&password=123
 2.如果确信URL串中的特殊字符不会引起歧义,也可以不对它们进行编码,例如:
 http://www.baidu.com/search.html?name=中国&password=123
 http://www.baidu.com/search.html?name=%D6%D0%B9%FA&password=123
 上面的两个URL字符串,不管是否对其进行URL编码,结果都是一样的,注意:虽然规定了除数字和英文字符不对其URL编码,但这并不等于必须对其URL编码,只有在有可能引起歧义或冲突时才是必需的.看下面的例子:
如果要传递的name是"中+国",如果不对其进行URL编码,服务器就会认为传过来的是"中 国"."中&国"如果不进行URL编码就传给服务器变成了
 http://www.baidu.com/search.html?name=中&国&password=123
我们知道,&这个字符在URL中是有特殊含义的.所以这个查询字符串的服务器端就被分成三段来解释.这样就不可能达到预期的结果.所以对这样的字符就必须进行URL编码. 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值