HTML URL 编码
URL 编码是一种对 URL 信息进行编码的过程,以便可以通过 Internet 安全地进行传输。
什么是 URL 编码
根据 RFC 3986 ,URL 中的字符仅限于一组已定义的保留和未保留的 US-ASCII 字符。URL 中不允许任何其他字符。但 URL 通常包含 US-ASCII 字符集之外的字符。必须将它们转换为有效的 US-ASCII 格式才能实现全球互操作性。
要映射全球使用的各种字符,需要使用两个步骤:
- 首先,数据根据 UTF-8 字符编码进行编码。
- 然后,只有那些与未保留集中的字符不对应的字节应该像%HH 一样进行百分比编码,其中 HH 是字节的十六进制值。
例如,字符串: François 将被编码为: Fran%C3%A7ois
Ç,ç(c-cedilla)是一个拉丁文字母。
保留字符
某些字符是“保留的”,因为它们可能(或可能不)通过特定 URL 方案中 的通用语法定义为分隔符。例如,正斜杠 /
字符用于分隔 URL 的不同部分。
如果 URL 组件的数据包含与保留的字符集冲突的字符(在 URL 方案中定义为分隔符),则冲突字符必须在形成 URL 之前进行百分比编码。URL 中的保留字符为:
! |
# |
$ |
& |
' |
( |
) |
* |
+ |
, |
/ |
: |
; |
= |
? |
@ |
[ |
] |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
%21 |
%23 |
%24 |
%26 |
%27 |
%28 |
%29 |
%2A |
%2B |
%2C |
%2F |
%3A |
%3B |
%3D |
%3F |
%40 |
%5B |
%5D |
非保留的字符
URL 中允许但没有保留目的的字符称为非保留字符。这些包括大写和小写字母、十进制数字、连字符、句点、下划线和波浪号。下表列出了 URL 中的所有未保留字符:
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
a |
b |
c |
d |
e |
f |
g |
h |
i |
j |
k |
l |
m |
n |
o |
p |
q |
r |
s |
t |
u |
v |
w |
x |
y |
z |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
- |
_ |
. |
~ |