咨询电话:010-56244858 010-56244868
 您当前的位置:首页 > 网站建设常见问题

urlencode函数编码处理操作实战

时间:2018-09-05 15:03:20  来源:http://www.ztxnet.com/  作者:卓天下
ASP中的用法:
Server.URLEncode("内容")
例:
<%
response.write Server.UrlEncode("要转码的内容")
%>
PHP中的用法:
urlencode("内容");
例:
<?
echo urlencode("要转码的内容");
?>
JSP中的用法:
URLEncoder.encode("要转码的内容");
<%
java.net.URLEncoder.encode("要转码的内容","UTF-8"); // 原来单参数方法已经过时。
%>
C#/.net中的用法:
HttpContext.Current.Server.UrlEncode("转码的内容");
VB.NET中的用法:
引用程序集System.Web
采用字符集GB2312来编码
Web.HttpUtility.UrlEncode("转码的内容", Encoding.GetEncoding("GB2312"))。
 
url转义其实也只是为了符合url的规范而已。因为在标准的url规范中中文和很多的字符是不允许出现在url中的。
 
看一下php的urlencode的说明了。
 
urlencode — 编码 URL 字符串
 
<div u"="">
string urlencode ( string $str )
返回字符串,此字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数,空格则编码为加号(+)。此编码与 WWW 表单 POST 数据的编码方式是一样的,同时与 application/x-www-form-urlencoded 的媒体类型编码方式一样。由于历史原因,此编码在将空格编码为加号(+)方面与 RFC1738 编码(参见 rawurlencode())不同。此函数便于将字符串编码并将其用于 URL 的请求部分,同时它还便于将变量传递给下一页。
 
标准的英文说明是:
 
"...Only alphanumerics [0-9a-zA-Z], the special characters "$-_.+!*'()," [not including the quotes - ed], and reserved characters used for their reserved purposes may be used unencoded within a URL."
那哪些字符是需要转化的呢?
 
1. ASCII 的控制字符
 
这些字符都是不可打印的,自然需要进行转化。
 
2. 一些非ASCII字符
 
这些字符自然是非法的字符范围。转化也是理所当然的了。
 
3. 一些保留字符
 
很明显最常见的就是“&”了,这个如果出现在url中了,那你认为是url中的一个字符呢,还是特殊的参数分割用的呢?
 
4. 就是一些不安全的字符了。
 
例如:空格。为了防止引起歧义,需要被转化为“+”。
 
明白了这些,也就知道了为什么需要转化了,而转化的规则也是很简单的。
 
按照每个字符对应的字符编码,不是符合我们范围的,统统的转化为%的形式也就是了。自然也是16进制的形式。
 
和字符编码无关
 
通过urlencode的转化规则和目的,我们也很容易的看出,urleocode是基于字符编码的。同样的一个汉字,不同的编码类型,肯定对应不同的urleocode的串。gbk编码的有gbk的encode结果。
 
apache等服务器,接受到字符串后,可以进行decode,但是还是无法解决编码的问题。编码问题,还是需要靠约定或者字符编码的判断解决。
 
因此,urleocode只是为了url中一些非ascii字符,可以正确无误的被传输,至于使用哪种编码,就不是eocode所关心和解决的问题了。
0
  上一篇:unix时间戳转换编程调用   下一篇:端口扫描作用及常用端口号
互联网解决方案  
  • 医疗行业互联网解决方案
  • 装修行业互联网解决方案
  • 旅游行业互联网解决方案
  • 物流行业互联网解决方案
  • 餐饮行业互联网解决方案
  • 工厂制造互联网解决方案