URLEncode与Java中的URLEncode

本文介绍了URL编码的历史,从RFC1738到RFC3986的变化,详细阐述了HTTP中的URL编码规则,并对比了Java和PHP中不同的实现方式。在HTTP请求中,客户端会自动对参数进行URL编码,服务器则进行解码,以确保数据正确传输。例如在POST请求中,`+`和空格会被编码处理。
摘要由CSDN通过智能技术生成
urlencode

在1994年订立的RFC1738中。对字符串中除了-_.三个字符之外的所有非字母数字字符都替换成百分号(%)后跟两位十六进制数。十六进制数中字母必须为大写。
http://tools.ietf.org/html/rfc1738

在2005年定义的RFC3986中,将针对- _.~(扩充了一个波浪线字符)四个字符之外的所有非字母数字字符进行百分号编码。

http中的urlencode

在W3C找到HTML标准的说明 http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4
在这里清楚的看到编码方式是根据ContextType的不同而区别对待的,在form的ContextType是[x-www-form-urlencoded]的时候会对form中的键/值对进行编码,空格被转义成+,其他字符按照[RFC1738]标准处理成%HH的形式。

编程语言中urlencode的实现
java

在这里插入图片描述
java中的UrlEncode是实现http协议form表单的标准,因此把空格转换成+,而没有提供类似php中rawurlencode的实现(RFC1738标准)

php

在php当中也提供了标准的RFC1738的实现
在PHP Manual中有对两个函数的说明:

urlencode</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值