添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

原文链接: http://czy4411741.blog.163.com/blog/static/34203127200991804738266/

有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。编码的格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。例如 空格的编码值是”%20”。
如果不使用转义字符,这些编码就会当URL中定义的特殊字符处理。

下表中列出了一些 URL 特殊符号及编码(十六进制值)

符号 URL 含义 编码
+ 表示空格 %2B
空格 可以用+号 %20
/ 分隔目录和子目录 %2F
? 分隔实际的URL和参数 %3F
% 指定特殊字符 %25
# 表示书签 %23
& 指定参数间的分隔符 %26
= 指定参数的值 %3D

对特殊字符进行重新编码

function URLencode(sStr){
     return escape(sStr).replace(/\+/g, '%2B')
         .replace(/\"/g,'%22')
         .replace(/\'/g, '%27')
         .replace(/\//g,'%2F')
         .replace(/\#/g,'%23');
                                    iis 管理器,网站下的请求筛选功能下,找到.browser,编辑功能设置,把允许双重转义选项勾上,重启网站一开始试了各种办法,配置文件配置,特殊字符Replace,UrlEncode都无济于事。...
                                    (图片来自:https://github.com/Bikeman868/UrlRewrite.Net)1.Microsoft RewriteUsing Rewrite Maps in URL Rewrite ModuleIn this walkthrough you will create two rewrite maps: one rewrite map will be used by...
                                    Url参数出现+、空格、=、%、&、#等字符的解决办法
原文链接:http://www.jeffjade.com/2015/04/16/2015-04-16-deal-url-special-char/
Url出现了有+,空格,/,?,%,#,&,=等特殊符号的时候,可能在服务器端无法获得正确的参数值,抑或是造成不能正常下载文件(作为Download Url时候),如何是好?解决办法:就是需要将这些字符转化成服务器可以识别的字符;但是为何Url有这些字符就会出现问题呢?这就得涉及到URL
                                    通常如果一样东西需要编码,说明这样东西并不适合传输。原因多种多样,如Size过大,包含隐私数据,对于Url来说,之所以要进行编码,是因为Url有些字符会引起歧义。
   例如,Url参数字符使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如/s?q=abc&ie=utf-8。如果你的value字符包含了=或者&,那么势必会造成接收Url的服务器解析错误,因此必须将引起歧义的&和=符号进行转义,也就是对其进行编码。
                                    为什么mysql不应该使用utf8编码
因为MySQL的utf8编码最多只能够存储3个字节的字符,而一般的utf8编码能够存储4个字节的字符。
也就是说对于文他应该能够正常存储,但是对于一些需要占用4个字节的字符他就不能处理了,例如emjoy符号。
虽然最多只能表示3个字节的utf8在一般的场景下并没有什么问题,但是最好还是避免使用mysql的utf8而使用utf8mb4
如果要传输其他字符则必须urlencode之后再传输
另外,保留字符均有特殊含义,若传输的保留字符纯粹是属于一个value值,那么也需要先进行urlencode之后再传输
                                    根据RFC规范,URL只允许包含以下特殊字符
!  #  $  &  '  (  )  *  +  ,  -  .  /  :  ;  =  ?  @  _  ~  0-9  a-z  A-Z
如果需要使用其它字符,则需要在客户端对URL进行编码,再在服务端进行解码
            URLEncoder.encode("https://www.baidu.com/?data={...
                                    使用微信支付的签名函数的时候,%、&、=、/、\、=、+、#、?、。、- 和空格。这些特殊字符不应该直接出现在url。否则签名会失败的。
private function sign($data){
	$stringA = "";
	// 按照参数名排序
	ksort($data);
	// 非空参数拼接
	foreach ($data as $key => $val...
                                    get提交数据情况下,url数据传输一些特殊符号会被转义,导致后台无法正常获取数据。解决方法是针对特殊字符转义为ASCII码值,对应列表如下. 
参见:http://www.w3school.com.cn/tags/html_ref_urlencode.html
有特殊字符的数据在js里进行替换
//替换规格值所有的百分号
var specValuename = "A4 5%覆盖率";
                                    在url直接使用一些特殊字符,在服务器端接收的时候经常出现数据丢失的情况。 
那么哪些字符能够直接被服务器识别,哪些有不能呢? 
字符“a-z”,”A-Z”,”0-9”,”.”,”-“,”_”,”*”都会直接被服务器识别,维持原值。 
然而,字符”+”,”/”,”?”,”%”,”#”,”&”,”=”都将被转码。那么我们就需要转码来让服务器进行识别。
“+” url+号的表示空格