这篇文章主要介绍了整理HTML5中支持的URL编码与字符编码,URL方面对HTML5用到无刷新修改URL等功能的实现时可以借鉴,字符编码则要注意BOM问题,需要的朋友可以参考下
URL 编码 URL 编码就是将 URLs 中不宜打印的字符或者具有特殊意义的字符转换为 Web 浏览器和服务器明白且普遍接受的表示法。 这些字符包括:
ASCII 控制字符 - 不宜打印的字符通常用于输出控制。字符范围是十六进制的 00-1F(十进制的 0-31)和 7F(十进制的 127)。下面提供了完整的编码表。
非 ASCII 控制字符 - 这些字符超出了 128 个 ASCII 字符集的范围。这个范围是 ISO-拉丁字符集的一部分以及包含整个十六进制的 ISO-拉丁字符集 00-FF (十进制的 128-255)的“前半部分”。下面提供了完整的编码表。
保留字符 - 诸如美元符号,和号,加号,通用符号,正斜杠,冒号,分好,等号,问号以及 “at”这类符号。所有这些符号在 URL 内都有不同的意义,因此需要编码。下面提供了完整的编码表。
不安全字符 - 包括空格,问号,小于符号,大于符号,磅字符,百分比符号,大括号左边部分,大括号右边部分,管道符,反斜杠,插入符号,波浪线。左方括号,右方括号,沉音符。出于某些原因,这些字符出现在 URLs 中存在被误解的可能性。这些字符也应该始终被编码。下面提供了完整的编码表。 编码表示法需要三个字符替换期望的字符:一个百分号,两个在 ASCII 字符集中表示字符位置的十六进制数字、
示例 最常见的特殊字符之一便是空格。我们不能在 URL 中直接输入一个空格。空格在字符集中就是十六进制的 20。因此请求服务器时可以使用 %20 表示空格。
复制代码代码如下:http://www.example.com/new%20pricing.html 这个 URL 实际上是从 www.example.com 检索一个名为 new pricing.html 的文档。
ASCII 控制字符编码 包括十六进制的 00-1F(十进制的 0-31)和 7F(十进制的 127)字符码。
十进制格式 |
十六进制值 |
字符 |
URL 编码 |
0 |
00 |
|
%00 |
1 |
01 |
|
%01 |
2 |
02 |
|
%02 |
3 |
03 |
|
%03 |
4 |
04 |
|
%04 |
5 |
05 |
|
%05 |
6 |
06 |
|
%06 |
7 |
07 |
|
%07 |
8 |
08 |
退格符 |
%08 |
9 |
09 |
tab |
%09 |
10 |
0a |
换行符 |
%0a |
11 |
0b |
|
%0b |
12 |
0c |
|
%0c |
13 |
0d |
回车符 |
%0d |
14 |
0e |
|
%0e |
15 |
0f |
|
%0f |
16 |
10 |
|
%10 |
17 |
11 |
|
%11 |
18 |
12 |
|
%12 |
19 |
13 |
|
%13 |
20 |
14 |
|
%14 |
21 |
15 |
|
%15 |
22 |
16 |
|
%16 |
23 |
17 |
|
%17 |
24 |
18 |
|
%18 |
25 |
19 |
|
%19 |
26 |
1a |
|
%1a |
27 |
1b |
|
%1b |
28 |
1c |
|
%1c |
29 |
1d |
|
%1d |
30 |
1e |
|
%1e |
31 |
1f |
|
%1f |
127 |
7f |
|
%7f |
非 ASCII 控制字符编码 包括整个十六进制的 ISO-拉丁字符集 80-FF(十进制的 128-255)编码的“前半部分”。
十进制格式 |
十六进制值 |
字符 |
URL 编码 |
128 |
80 |
€ |
%80 |
129 |
81 |
? |
%81 |
130 |
82 |
? |
%82 |
131 |
83 |
? |
%83 |
132 |
84 |
? |
%84 |
133 |
85 |
… |
%85 |
134 |
86 |
? |
%86 |
135 |
87 |
? |
%87 |
136 |
88 |
? |
%88 |
137 |
89 |
‰ |
%89 |
138 |
8a |
? |
%8a |
139 |
8b |
? |
%8b |
140 |
8c |
? |
%8c |
141 |
8d |
? |
%8d |
142 |
8e |
? |
%8e |
143 |
8f |
? |
%8f |
144 |
90 |
? |
%90 |
145 |
91 |
‘ |
%91 |
146 |
92 |
’ |
%92 |
147 |
93 |
“ |
%93 |
148 |
94 |
” |
%94 |
149 |
95 |
? |
%95 |
150 |
96 |
– |
%96 |
151 |
97 |
— |
%97 |
152 |
98 |
? |
%98 |
153 |
99 |
? |
%99 |
154 |
9a |
? |
%9a |
155 |
9b |
? |
%9b |
156 |
9c |
? |
%9c |
157 |
9d |
? |
%9d |
158 |
9e |
? |
%9e |
159 |
9f |
? |
%9f |
160 |
a0 |
|
%a0 |
161 |
a1 |
? |
%a1 |
162 |
a2 |
¢ |
%a2 |
163 |
a3 |
£ |
%a3 |
164 |
a4 |
¤ |
%a4 |
165 |
a5 |
¥ |
%a5 |
166 |
a6 |
| |
%a6 |
167 |
a7 |
§ |
%a7 |
168 |
a8 |
¨ |
%a8 |
169 |
a9 |
? |
%a9 |
170 |
aa |
a |
%aa |
171 |
ab |
? |
%ab |
172 |
ac |
? |
%ac |
173 |
ad |
- |
%ad |
174 |
ae |
? |
%ae |
175 |
af |
ˉ |
%af |
176 |
b0 |
° |
%b0 |
177 |
b1 |
± |
%b1 |
178 |
b2 |
2 |
%b2 |
179 |
b3 |
3 |
%b3 |
180 |
b4 |
′ |
%b4 |
181 |
b5 |
μ |
%b5 |
182 |
b6 |
? |
%b6 |
183 |
b7 |
· |
%b7 |
184 |
b8 |
? |
%b8 |
185 |
b9 |
1 |
%b9 |
186 |
ba |
o |
%ba |
187 |
bb |
? |
%bb |
188 |
bc |
? |
%bc |
189 |
bd |
? |
%bd |
190 |
be |
? |
%be |
191 |
bf |
? |
%bf |
192 |
c0 |
à |
%c0 |
193 |
c1 |
á |
%c1 |
194 |
c2 |
? |
%c2 |
195 |
c3 |
? |
%c3 |
196 |
c4 |
? |
%c4 |
197 |
c5 |
? |
%c5 |
198 |
c6 |
? |
%v6 |
199 |
c7 |
? |
%c7 |
200 |
c8 |
è |
%c8 |
201 |
c9 |
é |
%c9 |
202 |
ca |
ê |
%ca |
203 |
cb |
? |
%cb |
204 |
cc |
ì |
%cc |
205 |
cd |
í |
%cd |
206 |
ce |
? |
%ce |
207 |
cf |
? |
%cf |
208 |
d0 |
D |
%d0 |
209 |
d1 |
? |
%d1 |
210 |
d2 |
ò |
%d2 |
211 |
d3 |
ó |
%d3 |
212 |
d4 |
? |
%d4 |
213 |
d5 |
? |
%d5 |
214 |
d6 |
? |
%d6 |
215 |
d7 |
× |
%d7 |
216 |
d8 |
? |
%d8 |
217 |
d9 |
ù |
%d9 |
218 |
da |
ú |
%da |
219 |
db |
? |
%db |
220 |
dc |
ü |
%dc |
221 |
dd |
Y |
%dd |
222 |
de |
T |
%de |
223 |
df |
? |
%df |
224 |
e0 |
à |
%e0 |
225 |
e1 |
á |
%e1 |
226 |
e2 |
a |
%e2 |
227 |
e3 |
? |
%e3 |
228 |
e4 |
? |
%e4 |
229 |
e5 |
? |
%e5 |
230 |
e6 |
? |
%e6 |
231 |
e7 |
? |
%e7 |
232 |
e8 |
è |
%e8 |
233 |
e9 |
é |
%e9 |
234 |
ea |
ê |
%ea |
235 |
eb |
? |
%eb |
236 |
ec |
ì |
%ec |
237 |
ed |
í |
%ed |
238 |
ee |
? |
%ee |
239 |
ef |
? |
%ef |
240 |
f0 |
e |
%f0 |
241 |
f1 |
? |
%f1 |
242 |
f2 |
ò |
%f2 |
243 |
f3 |
ó |
%f3 |
244 |
f4 |
? |
%f4 |
245 |
f5 |
? |
%f5 |
246 |
f6 |
? |
%f6 |
247 |
f7 |
÷ |
%f7 |
248 |
f8 |
? |
%f8 |
249 |
f9 |
ù |
%f9 |
250 |
fa |
ú |
%fa |
251 |
fb |
? |
%fb |
252 |
fc |
ü |
%fc |
253 |
fd |
y |
%fd |
254 |
fe |
t |
%fe |
255 |
ff |
? |
%ff |
保留字符编码 下表用于编码保留字符。
十进制格式 |
十六进制值 |
字符 |
URL 编码 |
36 |
24 |
$ |
%24 |
38 |
26 |
& |
%26 |
43 |
2b |
+ |
%2b |
44 |
2c |
, |
%2c |
47 |
2f |
/ |
%2f |
58 |
3a |
: |
%3a |
59 |
3b |
; |
%3b |
61 |
3d |
= |
%3d |
63 |
3f |
? |
%3f |
64 |
40 |
@ |
%40 |
不安全字符编码 下表用于编码不安全字符。
十进制格式 |
十六进制值 |
字符 |
URL 编码 |
32 |
20 |
space |
%20 |
34 |
22 |
" |
%22 |
60 |
3c |
< |
%3c |
62 |
3e |
> |
%3e |
35 |
23 |
# |
%23 |
37 |
25 |
% |
%25 |
123 |
7b |
{ |
%7b |
125 |
7d |
} |
%7d |
124 |
7c |
| |
%7c |
92 |
5c |
\ |
%5c |
94 |
5e |
^ |
%5e |
126 |
7e |
~ |
%7e |
91 |
5b |
[ |
%5b |
93 |
5d |
] |
%5d |
96 |
60 |
` |
%60 |
字符编码
字符编码就是将字节转换为字符的一种方法。要验证或者显示一个 HTML 文档,程序必须选择一个字符编码。HTML5 作者有三种方式设置字符编码:
HTTP Content-Type 头: 如果你在编写 cgi 程序或者类似的程序,那么可以使用 HTTP Content-Type 头设置任意字符编码:
下面是一个简单的例子:
XML/HTML Code复制内容到剪贴板
- print "Content-Type: text/html; charset=utf-8\r\n";
<meta> 元素: 可以使用带有 charset 属性的 <meta> 元素指定 HTML5 文档前 512 个字节的编码:
下面是简化的例子:
XML/HTML Code复制内容到剪贴板
- <meta charset="UTF-8">
尽管这种语法是被允许的,但上述语法需要使用 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 替换。
Unicode 字节顺序标记(BOM) 一个字节顺序标记(BOM)由数据流开头的 U+FEFF 字符码组成,它可以用作定义字节顺序和编码形式的签名,主要是未标记的明文文件。
许多 Windows 程序(包括 Windows 记事本)都会在保存为 UTF-8 的任意文档开头添加 0xEF, 0xBB, 0xBF。这就是 Unicode 字节顺序标记(BOM)的 UTF-8 编码,通常被称为 UTF-8 BOM,尽管它和字节顺序没有关系。
对于 HTML5 文档,我们可以在文件的开头使用 Unicode 字节顺序标记(BOM)字符。这个字符为使用的编码提供了签名。 |