URL中的保留和不安全字符

摘要:
编写URL时,请使用US-ASCII字符集中可以显示的字符。例如,最常用的空间由%20表示,例如:http://www.google.com/new%20123.html除了无法显示的字符外,还需要对URL中的保留字符和不安全字符进行编码。所谓的保留字符是指在URL中具有特定含义的字符。不安全字符是指在URL中没有特殊含义,但在URL上下文中可能具有特殊含义的字符。例如,双引号(“”)中的保留字符和不安全字符及其URL编码字符、说明和使用代码;保留分号%3B/保留斜杠%2F?

书写URL时要使用US-ASCII字符集可以显示的字符。

http://www.google.com

如果需要在URL中使用不属于此字符集的字符,就要使用特殊的符号对该字符进行编码。

如:最常使用的空格用%20来表示,例如:http://www.google.com/new%20123.html

除了那些无法显示的字符外,还需要在URL中对那些保留(reserved)字符和不安全(unsafe)字符进行编码。

所谓保留字符就是那些在URL中具有特定意义的字符。不安全字符是指那些在URL中没有特殊含义,但在URL所在的上下文中可能具有特殊意义的字符。例如双引号(“”)

部分保留字符和不安全字符及其URL编码
字符描述用法编码
;分号保留%3B
/斜线保留%2F
?问号保留%3F
:冒号保留%3A
@“at”符号保留%4O
=等号保留%3D
&“和”符号保留%26
<小于号不安全%3C
>大于号不安全%3E
"双引号不安全%22
#井号不安全%23
%百分号不安全%25
{左大括号不安全%7B
}右大括号不安全%7D
|竖线不安全%7C
反斜线不安全%5C
^加字号不安全%5E
~波浪不安全%7E
[左中括号不安全%5B
]右中括号不安全%5D
`反单引号不安全%60
 空格不安全%20

  

mystr = mystr.replace("'","%2B") //单引号            

mystr = mystr.replace("+","%2B")
mystr = mystr.replace("*","%2A")
mystr = mystr.replace("!","%21")

mystr = mystr.replace("$","%24")

下面是w3schools网站上给出的编码参考

The default character-set in HTML5 is UTF-8.

CharacterFrom Windows-1252From UTF-8
space%20%20
!%21%21
"%22%22
#%23%23
$%24%24
%%25%25
&%26%26
'%27%27
(%28%28
)%29%29
*%2A%2A
+%2B%2B
,%2C%2C
-%2D%2D
.%2E%2E
/%2F%2F
0%30%30
1%31%31
2%32%32
3%33%33
4%34%34
5%35%35
6%36%36
7%37%37
8%38%38
9%39%39
:%3A%3A
;%3B%3B
<%3C%3C
=%3D%3D
>%3E%3E
?%3F%3F
@%40%40
A%41%41
B%42%42
C%43%43
D%44%44
E%45%45
F%46%46
G%47%47
H%48%48
I%49%49
J%4A%4A
K%4B%4B
L%4C%4C
M%4D%4D
N%4E%4E
O%4F%4F
P%50%50
Q%51%51
R%52%52
S%53%53
T%54%54
U%55%55
V%56%56
W%57%57
X%58%58
Y%59%59
Z%5A%5A
[%5B%5B
%5C%5C
]%5D%5D
^%5E%5E
_%5F%5F
`%60%60
a%61%61
b%62%62
c%63%63
d%64%64
e%65%65
f%66%66
g%67%67
h%68%68
i%69%69
j%6A%6A
k%6B%6B
l%6C%6C
m%6D%6D
n%6E%6E
o%6F%6F
p%70%70
q%71%71
r%72%72
s%73%73
t%74%74
u%75%75
v%76%76
w%77%77
x%78%78
y%79%79
z%7A%7A
{%7B%7B
|%7C%7C
}%7D%7D
~%7E%7E
 %7F%7F
`%80%E2%82%AC
%81%81
%82%E2%80%9A
ƒ%83%C6%92
%84%E2%80%9E
%85%E2%80%A6
%86%E2%80%A0
%87%E2%80%A1
ˆ%88%CB%86
%89%E2%80%B0
Š%8A%C5%A0
%8B%E2%80%B9
Œ%8C%C5%92
%8D%C5%8D
Ž%8E%C5%BD
%8F%8F
%90%C2%90
%91%E2%80%98
%92%E2%80%99
%93%E2%80%9C
%94%E2%80%9D
%95%E2%80%A2
%96%E2%80%93
%97%E2%80%94
˜%98%CB%9C
%99%E2%84
š%9A%C5%A1
%9B%E2%80
œ%9C%C5%93
%9D%9D
ž%9E%C5%BE
Ÿ%9F%C5%B8
 %A0%C2%A0
¡%A1%C2%A1
¢%A2%C2%A2
£%A3%C2%A3
¤%A4%C2%A4
¥%A5%C2%A5
¦%A6%C2%A6
§%A7%C2%A7
¨%A8%C2%A8
©%A9%C2%A9
ª%AA%C2%AA
«%AB%C2%AB
¬%AC%C2%AC
 %AD%C2%AD
®%AE%C2%AE
¯%AF%C2%AF
°%B0%C2%B0
±%B1%C2%B1
²%B2%C2%B2
³%B3%C2%B3
´%B4%C2%B4
µ%B5%C2%B5
%B6%C2%B6
·%B7%C2%B7
¸%B8%C2%B8
¹%B9%C2%B9
º%BA%C2%BA
»%BB%C2%BB
¼%BC%C2%BC
½%BD%C2%BD
¾%BE%C2%BE
¿%BF%C2%BF
À%C0%C3%80
Á%C1%C3%81
Â%C2%C3%82
Ã%C3%C3%83
Ä%C4%C3%84
Å%C5%C3%85
Æ%C6%C3%86
Ç%C7%C3%87
È%C8%C3%88
É%C9%C3%89
Ê%CA%C3%8A
Ë%CB%C3%8B
Ì%CC%C3%8C
Í%CD%C3%8D
Î%CE%C3%8E
Ï%CF%C3%8F
Ð%D0%C3%90
Ñ%D1%C3%91
Ò%D2%C3%92
Ó%D3%C3%93
Ô%D4%C3%94
Õ%D5%C3%95
Ö%D6%C3%96
×%D7%C3%97
Ø%D8%C3%98
Ù%D9%C3%99
Ú%DA%C3%9A
Û%DB%C3%9B
Ü%DC%C3%9C
Ý%DD%C3%9D
Þ%DE%C3%9E
ß%DF%C3%9F
à%E0%C3%A0
á%E1%C3%A1
â%E2%C3%A2
ã%E3%C3%A3
ä%E4%C3%A4
å%E5%C3%A5
æ%E6%C3%A6
ç%E7%C3%A7
è%E8%C3%A8
é%E9%C3%A9
ê%EA%C3%AA
ë%EB%C3%AB
ì%EC%C3%AC
í%ED%C3%AD
î%EE%C3%AE
ï%EF%C3%AF
ð%F0%C3%B0
ñ%F1%C3%B1
ò%F2%C3%B2
ó%F3%C3%B3
ô%F4%C3%B4
õ%F5%C3%B5
ö%F6%C3%B6
÷%F7%C3%B7
ø%F8%C3%B8
ù%F9%C3%B9
ú%FA%C3%BA
û%FB%C3%BB
ü%FC%C3%BC
ý%FD%C3%BD
þ%FE%C3%BE
ÿ%FF%C3%BF

URL Encoding Reference

The ASCII control characters %00-%1F were originally designed to control hardware devices.

Control characters have nothing to do inside a URL.

ASCII CharacterDescriptionURL-encoding
NULnull character%00
SOHstart of header%01
STXstart of text%02
ETXend of text%03
EOTend of transmission%04
ENQenquiry%05
ACKacknowledge%06
BELbell (ring)%07
BSbackspace%08
HThorizontal tab%09
LFline feed%0A
VTvertical tab%0B
FFform feed%0C
CRcarriage return%0D
SOshift out%0E
SIshift in%0F
DLEdata link escape%10
DC1device control 1%11
DC2device control 2%12
DC3device control 3%13
DC4device control 4%14
NAKnegative acknowledge%15
SYNsynchronize%16
ETBend transmission block%17
CANcancel%18
EMend of medium%19
SUBsubstitute%1A
ESCescape%1B
FSfile separator%1C
GSgroup separator%1D
RSrecord separator%1E
USunit separator%1F

通常情况下,如果对某个字符能否在URL中使用有疑问,那么你应该始终使用该字符的编码。除字母、数字和字符$-_.+!*'()外的其它所有字符都应该使用编码。

免责声明:文章转载自《URL中的保留和不安全字符》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux clamav杀毒软件的安装SAP HANA中的SLT简介下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Mysql字符集设置

最近,在项目组使用的mysql数据库中,插入数据出现乱码,关于这个问题做了下总结,我们从最基本的地方说起,到错误产生的深层次原因和解决办法。 基本概念 • 字符(Character)是指人类语言中最小的表义符号。例如’A'、’B'等;• 给定一系列字符,对每个字符赋予一个数值,用数值来代表对应的字符,这一数值就是字符的编码(Encoding)。例如,我们给...

C11中的Unicode

在C11(ISO/IEC 9899:2011)标准中引入了对UTF8、UTF16以及UTF32字符编码的支持。 其中,UTF8字符直接通过char来定义,字面量前缀使用u8。比如: char c = u8'你'; const char *s = u8"你好"; 而UTF16字符直接通过char16_t来定义,字面量前缀使用u。比如: #include &...

BufferedReader源码分析

BufferedReader源码分析1、案例代码 假设b.txt存储了abcdegfhijk public static void main(String[] args) throws IOException {//字符缓冲流BufferedReader bufferedReader=new BufferedReader(new FileReader(ne...

5-URL.createObjectURL()的使用方法

官方说明问文档 URL.createObjectURL() 静态方法会创建一个 DOMString,其中包含一个表示参数中给出的对象的URL。这个 URL 的生命周期和创建它的窗口中的 document 绑定。这个新的URL 对象表示指定的 File 对象或 Blob 对象。 URL.createObjectURL(blob)和FileReader.rea...

Python基础24_正则表达式,re模块,

 一. 正则表达式     正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。     正则表达式由普通字符和元字符组成, 普通字符包含大小写字母, 数字. 在匹配普通字符的时候我们直接写就可以了  ...

字符串补位

7.1.6 插入和填充字符串String类包含了在一个字符串中插入新元素的方法,可以用Insert在任意位置插入任意字符。而使用PadLeft/PadRight方法,可以在一个字符串的左右两侧进行字符填充。 1.Insert方法Insert方法用于在一个字符串的指定位置插入另一个字符串,从而构造一个新的串。Insert方法也有多个重载形式,最常用的为: p...