最近在使用compass进行高级搜索的时候有许多参数,在url上会暴露参数,为了隐藏URL的具体参数的含义(这个需要有个强大的正则表达规则来解析URL,即对url进行rewrite,在我之前的文章里有过介绍。 开发的时候,还是URL?PARAM=XX的形式。),同时为了让复杂的URL看上去好看点, 方便SEO,对URL进行了编码处理,用BASE64编码跟效率没有关系, URL也不会变短, BASE64编码好处是字符编码范围有限度。
另外,URL实际上大小写,在EMAIL中发送,都存在各种问题,完全使用ASCII也可以避免汉字编码问题。如果你的URL放在邮件里,很多MAIL SERVER会修改的你的URL,比如修改你的大小写,修改你的编码。那么这个时候,用户会非常的讨厌。一些特殊的字符可能导致, MAIL SERVER在安全处理上, 把URL硬生生的拆散了。
另外,为了保持和不同的HTTP SERVER兼容, 不让HTTP SERVER按编码规则修改你的URL。使用ASCII是最好的选择。
引用
http://domain/中文.html?q=中文.
1.第一个中文为pathinfo
2.第二个是queryString
这个url在get请求,也就是说直接拷贝到浏览器上敲回车执行的时候动作如下:
浏览器会对这个url中的分ascii字符集进行url encode.
中文ie:pathinfo 会用utf-8字符集进行url encode.queryString 会用gbk
中文firefox:pathinfo 会用gbk字符集进行url encode.queryString 会用gbk:
http://search1.taobao.com/browse/0/n-0-----------------g,m5sw2ytmmvza----------------40--commend-0-all-0.htm?at_topsearch=1
n-0-----------------g,m5sw2ytmmvza----------------40--commend-0-all-0.htm
这段是pathinfo.也就是单单中文ie,和中文firefox 进行url encode时,采用的字符集都不一致.一种是utf-8,一种是gbk.那么传到后台程序如何decode呢?
怎么做?做法就是程序把pathinfo用一定的方式转换成ascii码,这样浏览器就不自己来做了.做法有很多.下面举两种:
一种,使用urlEncode(stirng,编码格式).因为这个编码格式是自己制定的.所以后台知道如何decode.
一种:base64.甚至是base32.其实道理都是一样的.把pathinfo用程序转换成ascii码.不让浏览器自己瞎转.
引用
然而,标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。
为解决此问题,可采用一种用于URL的改进Base64编码,它不在末尾填充'='号,并将标准Base64中的“+”和“/”分别改成了“*”和“-”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。
参考:
http://www.iteye.com/topic/286810
http://www.iteye.com/topic/286240
http://dogstar.iteye.com/blog/227056
分享到:
相关推荐
URL编码,全称为统一资源定位符(Uniform Resource Locator)编码,是互联网上用于标识资源的一种标准格式。在HTTP协议中,URL是访问网络资源的重要途径,但有些字符在URL中直接使用时可能会引起问题,因此需要进行...
### JS实现URL编码转换中文 在Web开发过程中,经常需要处理URL中的特殊字符,特别是中文字符。由于URL传输限制及浏览器解析原因,中文等非ASCII字符需要被编码为特定格式才能在网络上传输。本文将详细介绍如何使用...
总的来说,C++中处理URL编码和解码需要理解HTTP协议和相关标准,掌握基本的字符串操作技巧,以及可能涉及的字符集问题。通过自定义实现或利用现有库,我们可以方便地在C++程序中实现URL的编码和解码功能。
URL编码,全称为统一资源定位符(Uniform Resource Locator)编码,是互联网上数据通信的一种标准格式,用于将非ASCII字符转换为可以在URL中安全传输的形式。GBK编码是中国大陆广泛使用的汉字编码标准,它包含了GB...
另外,虽然在大多数情况下,URL编码遵循ASCII标准,但在Unicode环境中,URL编码也可以扩展到包含非ASCII字符,这通常被称为“ Punycode”转换。 在实际开发中,了解并正确使用URL编码和解码不仅能保证数据的完整性...
2. **URL编码的常见问题及解决方案** - **乱码问题**: 当URL中的非ASCII字符未正确编码时,可能会出现乱码。解决方法是在发送请求前使用`UrlEncode`对查询字符串进行编码,或者在接收时使用`UrlDecode`进行解码。 ...
标题和描述中提到的“vb url编码解码”是指在Visual Basic(VB)环境中进行URL编码和解码的过程。URL编码,也称为百分号编码,是一种用于将特殊字符转换为适用于URL格式的编码方式,目的是确保这些特殊字符能够正确...
URL编码,全称为统一资源定位符(Uniform Resource Locator)编码,是互联网上数据通信的一种标准格式,用于确保数据在传输过程中不受损失或错误地被解释。URL编码的主要目的是解决URL中可能包含的特殊字符,如空格...
标题中的“URL编码解码小程序”指的是一个工具或软件,其主要功能是处理URL(统一资源定位符)中的编码问题。...理解URL编码的工作原理和应用场景,对于理解互联网通信的基础和解决相关问题至关重要。
例如,Apache Commons Lang库提供了`StringEscapeUtils`类,用于对字符串进行编码和解码,包括URL编码。此外,Java的`java.net.URLDecoder`和`java.net.URLEncoder`类也提供了URL编码和解码的功能。 文件的编码方式...
这个名为“一个简单url编码解码”的项目,就是为新手提供了一个理解和实践URL编码与解码机制的实例。 URL编码是根据RFC 3986标准进行的,主要使用百分号(%)表示非ASCII字符或特殊字符的ASCII十六进制值。例如,...
URL编码是互联网上的一种标准编码方式,用于将特殊字符转换为可安全传递的ASCII字符串,以便在URL(统一资源定位符)中使用。这个“URL编码转换工具”就是专门为了帮助开发者解决这个问题而设计的。它能够将URL中的...
在IT领域,URL编码是一种常见的数据处理技术,特别是在网络编程中。这个压缩包文件的标题和描述提及了“url加密”和“URL编码”,实际上,它们指的是同一个概念,即URL编码(URL Encoding)。URL编码是根据统一资源...
本文将深入探讨URL编码转换的相关概念、应用场景以及一个具体的C/C++实现示例。 #### 一、URL编码的基本概念 URL编码(也称为百分号编码)是一种用于表示URL中特殊字符的标准方法。它主要用于确保所有字符都能通过...
自动判断URL编码的方法。URL中包含编码的中文的时候,程序获取queryString需要根据url的不同编码,采用不同的解码方式,RequestQueryString方法能够自动识别url是用UTF-8编码还是GB2312编码,从而自动获取争取的值。...
URL解码编码函数[URL解码编码函数]-精品源代码
自己写的,可能有bug,请大家一块学习 环境为PB12 函数(及参数) 作用 arraysort 对一维数组进行排序 decto 将十进制数字转成其它进制字符串 ...urlencode 将指定字符串以进行指定字符集url编码 涨价了,哈哈
在IT行业中,URL编码是一种常见的数据处理方式,特别是在网页开发和服务器通信中。URL(统一资源定位符)编码是确保URL中的...通过理解和使用这类工具,可以更有效地解决与URL编码相关的问题,确保网络通信的顺畅无阻。
URL编码遵循统一资源标识符(URI)的规则,其中最常用的是基于百分号(%)的编码方法。每个非ASCII或特殊字符会被替换为"%xy"的形式,其中xy是该字符在UTF-8编码中的两个字节的十六进制表示。例如,空格字符(ASCII...