写code的时候偶然发现了这方面的东西,就查了下,做个总结。
URL编码表定义
URL编码(也称为百分号编码)是一种在URL中表示特殊字符的方法。它将非字母数字字符替换为 %
后跟两个表示字符ASCII值的十六进制数字。这种编码用于确保这些字符可以安全地包含在URL中,在传输和解析过程中不会引起错误。
URL编码表
以下是一些常见字符及其URL编码表示法:
字符 | URL编码 | 字符 | URL编码 |
---|---|---|---|
空格 | %20 | # | %23 |
! | %21 | $ | %24 |
" | %22 | % | %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 | } |
~ | %7E |
特殊字符及其编码意义
- 空格(Space):
%20
- 引号("):
%22
- 百分号(%):
%25
- 加号(+):
%2B
- 斜杠(/):
%2F
- 冒号(:):
%3A
- 问号(?):
%3F
- @ 符号(@):
%40
- 链接符号(#):
%23
编码示例
示例1:编码URL中的空格和特殊字符
假设你有一个字符串 Hello World!
,你想要将其编码为URL友好的格式:
import urllib.parse
original_string = "Hello World!"
encoded_string = urllib.parse.quote(original_string)
print(encoded_string) # 输出:Hello%20World%21
在Python中使用 urllib.parse.quote
方法,可以将字符串中的空格和感叹号字符编码为 %20
和 %21
。
示例2:解码URL编码的字符串
假设你有一个URL编码的字符串 Hello%20World%21
,你想要将其解码回来:
import urllib.parse
encoded_string = "Hello%20World%21"
decoded_string = urllib.parse.unquote(encoded_string)
print(decoded_string) # 输出:Hello World!
在Python中使用 urllib.parse.unquote
方法,可以将编码的字符串解码回来。
浏览器和编程语言中的URL编码和解码
JavaScript:
// 编码
let originalString = "Hello World!";
let encodedString = encodeURIComponent(originalString);
console.log(encodedString); // 输出:Hello%20World%21
// 解码
let decodedString = decodeURIComponent(encodedString);
console.log(decodedString); // 输出:Hello World!
属性
URL编码的字符主要有以下几类:
-
保留字符(Reserved Characters): 在URL的某些部分有特殊含义的字符。
- 例如:
:
,/
,?
,#
,[
,]
,@
,!
,$
,&
,'
,(
,)
,*
,+
,,
,;
,=
- 例如:
-
不安全字符(Unsafe Characters): 这些字符在URL中使用可能会引起歧义。
- 例如:空格、双引号(")、
<
,>
,#
,%
,{
,}
,|
,\
,^
,~
,[
,]
,`
- 例如:空格、双引号(")、
-
字母数字字符(Alphanumeric Characters): 这些字符不需要编码。
- 例如:字母(A-Z,a-z)、数字(0-9)
用途和示例
1. 安全传输数据
URL编码通常用于确保特殊字符不会被误解为URL的控制字符,从而在URL传输过程中避免错误。
2. 表示保留字符
在某些上下文中,例如查询字符串中,斜杠 /
和其他保留字符需要被编码以表示实际内容而非路径分隔符。
常见使用场景
- Form Data 提交: 在HTML表单提交时,表单数据会被编码以确保特殊字符可以正确传递。
- 查询参数: URL中的查询参数需要适当编码以防止干扰URL结构。
- 路径参数: 某些Web应用程序会对路径参数进行编码,以确保参数在路由中被正确解析。
总结
URL编码(百分号编码)是Web开发中常用的方法,用于确保URL可以安全地传输包含特殊字符、保留字符和不安全字符的数据。在实际开发中,你可以使用编程语言提供的URL编码函数来处理URL编码和解码。学习并理解这些编码规则,能够帮助你处理URL中的各种复杂情况。