url_parser
简介
URL编码/解码转换
基本概念:
- 百分号编码(Percent-encoding), 也称作URL编码(URL encoding), 是特定上下文的统一资源定位符 (URL)的编码机制。
- 不安全字符:在URL中没有特殊含义,但在URL所在的上下文中可能具有特殊意义的字符,需要进行编码处理。
RFC3986文档规则URL中只允许包含未保留字符以及所有保留字符。
未保留字符:(66个),不需要进行百分号编码
- 英文字母(a-zA-Z),- 数字(0-9)和- -_.~4个特殊字符。
保留字符:(18个),指那些在URL中具有特定意义的字符
- :/?#[]@和- !$&'()*+,;=。
- :/?#[]@: 分隔Url的协议、主机、路径等组件(其中- [和- ]为不安全的保留字符,因此是需要进行- 百分号编码)。
- !$&'()*+,;=: 用于在每个组件中起到分隔作用的。
是否需要进行百分号编码是由
编码方式决定,而非保留字符来决定的。
JS中常见编码方式的区别:
- 
escape:是非标准的编码方式,主要用于处理字符串,而非URL。 
- 
escape/unescape加密解码/编码解码,又叫%u编码 
- 
编码字符串出现有"u",它是unicode编码,Escape编码采用的是UTF-16BE模式。 
- 
encodeURI:是W3C的标准(RFC 3986),主要用于编码整个URL。 
- 
encodeURIComponent:是W3C的标准(RFC 3986),主要用于编码URL中的参数。 
- 
escape/unescape 等同于 escape/unescape。 
- 
安全字符(69个):*@/+-._0-9a-zA-Z 
- 
url_encode/url_decode 等同于 encodeURI/decodeURI。 
- 
安全字符(82个):+-._:/?#[]@!$&'()*+,;=0-9a-zA-Z 
- 
url_component_encode/url_component_decode 等同于 encodeURIComponent/decodeURIComponent。 
- 
安全字符(71个):!'()*-._~0-9a-zA-Z 
组件接口
url_parser.gs
| 函数原型 | 函数作用 | 
|---|---|
| string escape(string str, string from_encoding = nil) | 字符串编码转换,等同于js中的escape处理 | 
| string unescape(string chars, string to_encoding = nil) | 字符串编码转换,等同于js中的unescape处理 | 
| string url_encode(string url, string from_encoding = nil, string to_encoding = "UTF-8") | URL编码转换,等同于js中的encodeURI处理 | 
| string url_decode(string chars, string to_encoding = nil, string from_encoding = "UTF-8") | URL解码转换,等同于js中的decodeURI处理 | 
| string url_component_encode(string url, string from_encoding = nil, string to_encoding = "UTF-8") | URL编码转换,等同于js中的encodeURIComponent处理 | 
| string url_component_decode(string chars, string to_encoding = nil, string from_encoding = "UTF-8") | URL解码转换,等同于js中的decodeURIComponentI处理 |