HTML编码

JavaScript encodeURI() 函数

JavaScript encodeURIComponent() 函数

1.encodeURI:

不编码字符① - _ * . ! ~ ' ( ) ; / ? : @ & = + $ , #  (20个)

2.encodeURIComponent:

不编码字符的① - _ * .  (4个) 

不编码字符的② ! ~  ' ( )  (5个)

特殊的编码字符③ 空白⇒%20

3.URLEncoder:

不编码字符的① - _ * .  (4个)

特殊的编码字符② 空白⇒+

RFC3986文档规定,Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符

RFC3986中指定了以下字符为保留字符:! * ' ( ) ; : @ & = + $ , / ? # [ ] (18个)

http://www.ietf.org/rfc/rfc3986.txt

2.3.Unreserved Characters

在URI中被允许使用,但是又不是保留用的字符(do not have a reserved purpose)被称为非保留字符。

非保留字符包括大小写字母,数字,英文破折号,英文句号,英文下划线,英文波浪线。

unreserved  = ALPHA / DIGIT / "-" / "." / "_" / "~"

把一个URI中的保留字符替换为与他相对应的百分号编码的US-ASCII字节组得到的URI和原来的URI是相等的:它们识别相同的资源。然而,URI的比较实现中并不总是在比较之前就做一下标准化。为了一致性,ALPHA(%41-%5A and %61-%7A), DIGIT (%30-%39), hyphen (%2D), period (%2E), underscore (%5F), or tilde (%7E),这些百分号编码的字节组不应当由URI生成者创建,而应当使用URI规范器将它们解码为对应的非保留字符。

(※一句话:非保留字符不应该编码为百分号编码)

原文地址:https://www.cnblogs.com/niaomingjian/p/5129849.html