在Web应用程序中,URL是非常常见的中介语言,它是互联网上资源的唯一标识符。在URL中,某些字符被保留为特殊含义字符,例如问号、等号、斜杠等,这些字符的使用需要进行转义。本文将从多个方面介绍URL转义相关的知识,帮助开发工程师更好地理解和应用。

一、URL转义字符

URL转义是将特殊字符转换为URL允许的格式,以确保它们能够被正确地传输和解析。在URL中,下列字符需要被转义:

" "(空格)                %20
                              %3E
#                             %23
%                             %25
{                             %7B
}                             %7D
|                              %7C
\                            %5C
^                             %5E
~                              %7E
[                             %5B
]                             %5D
`                             %60
;                              %3B
/                              %2F
?                             %3F
:                             %3A
@                             %40
=                             %3D
&                        %26
$                             %24
+                             %2B
,                             %2C

需要注意的是,在进行URL编码时,应当只对不安全的字符进行编码。以下字符不必进行编码:字母(A-Z,a-z)、数字(0-9)、连线符(-)、下划线(_)、句点(.)和波浪号(~)。

二、URL转义字符表

下面是完整的字符转义表:

字符 URL转义 字符 URL转义
%20   %20
< %3C < %3C
> %3E > %3E
# %23 # %23
% %25 % %25
{ %7B { %7B
} %7D } %7D
| %7C | %7C
\ %5C \ %5C
^ %5E ^ %5E
~ %7E ~ %7E
[ %5B [ %5B
] %5D ] %5D
` %60 ` %60
; %3B ; %3B
/ %2F / %2F
? %3F ? %3F
: %3A : %3A
@ %40 @ %40
= %3D = %3D
& %26 & %26
$ %24 $ %24
+ %2B + %2B
, %2C , %2C

三、URL转义工具

本文介绍了URL需要转义的字符和对照表,但是手动转义非常费时费力,因此我们可以使用URL转义工具进行自动转义。

以下是一些常用的在线URL转义工具:

  • URLencoder.org
  • URLencoder.io
  • Eric Meyer’s URL Decoder/Encoder

四、URL转义方法

在JavaScript中,URL转义可以使用encodeURI()或encodeURIComponent()方法进行转义。其中encodeURI()方法用于整个URL地址,而encodeURIComponent()方法用于URL中的参数值。

以下是两种URL转义的使用方法:

(1)使用encodeURI()方法进行URL转义

var uri = "http://www.example.com/My first HTML.html";
var encodedUri = encodeURI(uri);
console.log(encodedUri);

输出:

http://www.example.com/My%20first%20HTML.html

(2)使用encodeURIComponent()方法进行URL转义

var uri = "http://www.example.com/search.php?q=puppy love";
var encodedUri = encodeURIComponent(uri);
console.log(encodedUri);

输出:

http%3A%2F%2Fwww.example.com%2Fsearch.php%3Fq%3Dpuppy%20love

五、URL转义处理

在进行URL转义时,需要注意以下几点问题:

(1)在使用encodeURIComponent()方法进行参数值转义时,需要注意以下几点问题:

  • 对于多个参数值的情况,应当对每个参数值分别进行转义,而不是将整个参数字符串进行转义,否则可能会导致服务器无法正确解析参数值;
  • 参数值应当在服务器端进行解码,以确保正确传递参数;
  • 对于使用JSON传递URL参数的情况,需要使用encodeURIComponent()方法对JSON字符串进行转义,以确保正确传递参数。

(2)在进行URL转义时,应当避免使用eval()函数对字符串进行解析,否则可能存在安全漏洞。

(3)如果在URL中使用中文字符,建议使用时将中文字符进行UTF-8编码,并使用decodeURIComponent()方法进行解码,以确保正确传递中文字符。

六、URL转义字符对照表

以下是URL转义字符对照表:

打赏
  • 打赏支付宝扫一扫
  • 打赏微信扫一扫

关注我们的公众号

微信公众号
字符 URL转义
空格 %20
! %21
%22
# %23
$ %24
% %25
& %26
%27
( %28
) %29
* %2A
+ %2B
, %2C
%2D
. %2E
/ %2F
: %3A
; %3B
< %3C
= %3D
> %3E
? %3F
@ %40
[ %5B
\ %5C
] %5D
^ %5E
_ %5F
` %60
{ %7B
| %7C
}