url编码规则

规则:

1.将空格转换为加号(+)

2.对0-9、a-z、A-Z之间的字符保持不变

3.对于所有其他的字符,用这个字符的当前当前字符集编码在内存中的十六进制格式表示,并在每一个字节前加上一个百分号(%),如字符“+”是用%2B表示,字符“=”用%3D表示,字符“&”用%26表示,每个中文字符在内存中占两个字节,字符“中”用%D6%D0表示,字符“国”用%B9%FA表示。

4.空格也可以直接用其十六进制编码方式,即用%20表示,而不是将它转换为加号(+)。

说明:

1.如果url串中的特殊字符可能会产生歧义或冲突,则必须对这些特殊字符进行url编码。例如,服务器会将不编码的“中+国”当作“中 国”处理(因为加号会被误认为是空格)。还例如,当name参数值为“中&国”时:http://www.girlidea.com/register.html?name=中&国&password=123

由于url中的参数分割符为“&”,如果不对“中&国”中的“&”编码,那么服务器就会认为传递给name的参数值为“中”,“中”与“国”之间的“&”就会被认为时参数分隔符,“国”字就被误认为成新的参数名称了,所以你就必须要对“&”进行编码,编码后结果如下:http://www.girlidea.com/register.html?name=中%26国&password=123

2.如果你的浏览器地址是这种形式http://www.girlidea.com/example/index.html#section2

那么其中的http://www.girlidea.com/部分指定了3w的服务器地址、端口号(默认为80时可以省略不写)、和协议名,而example/index.html#section2 这一部分指定了浏览器想要访问的资源在服务器的路径,浏览器是根据http://www.girlidea.com/部分信息来与服务器建立连接然后把这一部分的信息example/index.html#section2 发送给w3c服务器请求服务器返回这个路径的名所指定的网页文件,那就说明浏览器只是传递了example/index.html#section2 这部分字符给了服务器,所以我们只需要对example/index.html#section2 这部分内容进行编码,那么我们就可以把整个url修改为这样:http://www.girlidea.com/example%2Findex.html%23section2,但是呢,我们并不用对其中的“/”“#”这两个号进行编码,不过也没关系,服务器看到了这些编码后会解码,解出来之后就是这两个符号“/”“#”

http://www.girlidea.com/example/index.html#section2完全一样,只是让服务器多了一些工作而已

 

上述内容是本人看完视频教程后整理出来的,讲解比较详细、通俗,以下内容摘自网络

http://blog.ccidnet.com/blog.php?do=showone&uid=15261&type=blog&itemid=287198

 

说到url编码,URL 编码是什么东东呢?看看定义:url编码是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和其中的值,将它们以name/value参数编码(移去那些不能传送的字符, 将数据排行等等)作为URL的一部分或者分离地发给服务器。不管哪种情况, 在服务器端的表单输入格式样子象这样: theName=Ichabod+Crane&gender=male&status=missing& ;headless=yes
URL编码遵循下列规则: 每对name/value由&符分开;每对来自表单的name/value由=符分开。如果用户没有输入值给这个name,那么这个name还是出现,只是无值。任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括象 =, &, 和 % 这些特殊的字符。  呵呵,明白了吧,其实url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上“%”。比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。那么汉字的url编码呢?很简单,看例子:“胡”的ascii码是-17670,十六进制是BAFA,url编码是“%BA%FA”。呵呵,知道怎么转换的了吧。
  URL编码平时我们是用不到的,因为IE会自动将你输入到地址栏的非数字字母转换为url编码。所以对于浏览器来说http://blog.csdn.net/l%61ke2http://blog.csdn.net/lake2是等效的(注意,第一个url我用%61替换了a)。呵呵,或许你已经想起了,有人提出数据库名字里带上“#”以防止被下载,因为IE遇到#就会忽略后面的字母。破解方法很简单——用url编码%23替换掉#。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值