原文链接:
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中+号的表示空格