URL编码

本文的目的是设计一个完成URL编码的C++类。在我曾经的项目中,我需要从 VC++ 6.0应用程序中POST数据,而这些数据需要进行URL编码。我在MSDN中查找 能根据提供的字符串生成URL编码的相关类或API,但我没有找到,因此我必须设 计一个自己的URLEncode C++类。

URLEncoder.exe是一个使用URLEncode类的MFC对话框程序。

如何处理

一些特殊字符在Internet上传送是件棘手的事情, 经URL编码特殊处理,可以 使所有字符安全地从Internet传送。

例如,回车的ASCII值是13,在发送FORM数据时候这就认为是一行数据的结束 。

通常,所有应用程序采用HTTP或HTTPS协议在客户端和服务器端传送数据。服 务器端从客户端接收数据有两种基本方法:

1、数据可以从HTTP头传送(COOKIES或作为FORM数据发送)

2、可以包含在URL中的查询部分

当数据包含在URL,它必须遵循URL语法进行编码。在WEB服务器端,数据自动 解码。考虑一下下面的URL,哪个数据是作为查询参数。

例如:http://WebSite/ResourceName?Data=Data

WebSite是URL名称

ResourceName可以是ASP或Servlet名称

Data是需要发送的数据。如果MIME类型是Content-Type: application/x- www-form-urlencoded,则要求进行编码。

RFC 1738

RFC 1738指明了统一资源定位(URLs)中的字符应该是US-ASCII字符集的子集 。这是受HTML的限制,另一方面,允许在文档中使用所有ISO-8859-1(ISO- Latin)字符集。这将意味着在HTML FORM里POST的数据(或作为查询字串的一部 分),所有HTML编码必须被编码。

ISO-8859-1 (ISO-Latin)字符集

在下表中,包含了完整的ISO-8859-1 (ISO-Latin)字符集,表格提供了每个 字符范围(10进制),描述,实际值,十六进制值,HTML结果。某个范围中的字 符是否安全。

Character range(decimal) Type Values Safe/Unsafe
0-31 ASCII Control Characters These characters are not printable Unsafe
32-47 Reserved Characters '' ''!?#$%&''()*+,-./ Unsafe
48-57 ASCII Characters and Numbers 0-9 Safe
58-64 Reserved Characters :;<=>?@ Unsafe
65-90 ASCII Characters A-Z Safe
91-96 Reserved Characters [\]^_` Unsafe
97-122 ASCII Characters a-z Safe
123-126 Reserved Characters {|}~ Unsafe
127 Control Characters '' '' Unsafe
128-255 Non-ASCII Characters '' '' Unsafe
时间: 2024-09-09 19:14:10

URL编码的相关文章

URL编码与SQL注射

编码|编码 说到url编码,你或许会想起N年前的url编码漏洞.可惜我是"生不逢时"啊,我接触网络时,那个漏洞早就绝迹咯.  言归正传,URL 编码是什么东东呢?看看我从网上抄的定义:  引用: url编码是一种浏览器用来打包表单输入的格式.浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送的字符, 将数据排行等等)作为URL的一部分或者分离地发给服务器.不管哪种情况, 在服务器端的表单输入格式样子象这样:  theName=Ichab

ASP技巧:URL编码与SQL注入

sql|编码|技巧 说到url编码,你或许会想起N年前的url编码漏洞.可惜我是"生不逢时"啊,我接触网络时,那个漏洞早就绝迹咯. 言归正传,URL 编码是什么东东呢?看看我从网上抄的定义: 引用: url编码是一种浏览器用来打包表单输入的格式.浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送的字符, 将数据排行等等)作为URL的一部分或者分离地发给服务器.不管哪种情况, 在服务器端的表单输入格式样子象这样: theName=Icha

混乱的URL编码

URL全称Uniform Resource Locator,直译为"统一资源定位符",也就是网页地址,是互联网上任意角落都可以访问到的,言外之意是说,URL不受国别.种族.语言.编码差异的约束,是编码无关的.然而我们常常在浏览器中敲入诸如"http://url/中文"的url,也能正确访问,既然url中包含中文,那么如何让其他国家那些没有中文编码的计算机上也能访问到相同的网址呢? RFC 1738中对URL有明确规定,URL必须由英文字母.数字.和某些标点符号组成,

在Linux Shell下将汉字转换为Url编码

在linux 的shell环境下有一个od命令可以将文件按不同的进制的ascii码输 出,该功能可以完成在linux shell下将汉字转换为url编码的任务. url编码是十六进制的形如%E6%9C%8D%E5%8A%A1%E5的字符串,test是包含 "数据库网络,"这几个字符的文件,以下命令输出: #od -t x /test 0000000 ddbefdca f8cde2bf 0a2ce7c2 0000014 该字符串对应的url编码为 %CA%FD%BE%DD%BF%E2%C

Asp.net对url编码的转化

今天突然遇到一个棘手的问题,就是对于url编码的转换. 大家上网的时候经常可以发现我们输入的汉字在url传输的时候是%xx%xx的形式. 如果我们需要提取上面的信息该怎么办呢?如果是通过类似index.aspx?name=%xx%xx还可以通过request取得值.所以不用管那么多.可是如果这些字符包含在一个地址里面,而不是参数,怎么办? 用Uri.UnescapeDataString()函数转化 后可以得到正确的中文编码. string ss = "%e9%ab%98%e6%b8%85%e6%

js和php对url编码的处理方法

 这篇文章主要介绍了关于js和php对url编码的处理方法,需要的朋友可以参考下 解决办法: 采用js对URL中的汉字进行escape编码.    代码如下: <a href="" onclick="window.open('product_list.php?p_sort='+escape('PHP开发资源网'));">   这样点击链接后的效时:    引用:http://127.0.0.1/shop/product_list.php?p_sort=P

国外url编码-国外的URL编码方式与国内的URL编码方式有什么不同?

问题描述 国外的URL编码方式与国内的URL编码方式有什么不同? 我最近做一个网站,在本地运行无误后发布到国外的服务器上运行时,有个特殊字符的链接不能识别,请问,这个的特殊字符让国外的服务器可以识别?

url 编码 js url传参中文乱码解决方案_javascript技巧

1.配置文件web.config中 在节中加上整个网站的编码方式. <globalization fileEncoding="GB2312" requestEncoding="GB2312" responseEncoding="GB2312"/> 这样参数就以gb2312的中文编码方式传输了.而一般默认是utf-8. 2.在传参是先编码在传输,接受时先编码,在接收. string mm=Server.URLEncode(你); Res

URL原理、URL编码、URL特殊字符

From: http://blog.csdn.net/chenlycly/article/details/51820727 From: http://blog.csdn.net/zmx729618/article/details/51381655 From: http://www.cnblogs.com/coco1s/p/5038412.html 通常如果一样东西需要编码,说明这样东西并不适合传输.原因多种多样,如Size过大,包含隐私数据,对于Url来说,之所以要进行编码,是因为Url中有些字