说道区别我们先看一下官方的:
/**
* Encode the string [component] using percent-encoding to make it
* safe for literal use as a URI component.
*
* All characters except uppercase and lowercase letters, digits and
* the characters `-_.!~*'()` are percent-encoded. This is the
* set of characters specified in RFC 2396 and the which is
* specified for the encodeUriComponent in ECMA-262 version 5.1.
*
* When manually encoding path segments or query components remember
* to encode each part separately before building the path or query
* string.
*
* For encoding the query part consider using
* [encodeQueryComponent].
*
* To avoid the need for explicitly encoding use the [pathSegments]
* and [queryParameters] optional named arguments when constructing
* a [Uri].
*/
static String encodeComponent(String component) {
return _Uri._uriEncode(_Uri._unreserved2396Table, component, utf8, false);
}
/**
* Encode the string [uri] using percent-encoding to make it
* safe for literal use as a full URI.
*
* All characters except uppercase and lowercase letters, digits and
* the characters `!#$&'()*+,-./:;=?@_~` are percent-encoded. This
* is the set of characters specified in in ECMA-262 version 5.1 for
* the encodeURI function .
*/
static String encodeFull(String uri) {
return _Uri._uriEncode(_Uri._encodeFullTable, uri, utf8, false);
}
Uri类提供了对字符串进行编码和解码的函数,以便在Uri中使用(您可能知道url)。这些函数处理uri特有的字符,例如&和=。Uri类还解析并公开Uri主机、端口、 协议等的组件。
编码和解码完整的uri
要对URI中具有特殊含义的字符(例如/、:、&、#)进行编码和解码,请使用encodeFull()和decodeFull()方法。这些方法适用于编码或解码完整的URI,保留完整的特殊URI字符。
其实主要就是保留字符的区别,看下面的输出就知道了
var uri = 'http://example.org/api?foo=some message';
var encoded = Uri.encodeFull(uri);
assert(encoded ==
'http://example.org/api?foo=some%20message');
var decoded = Uri.decodeFull(encoded);
assert(uri == decoded);
注意,只有some和message中间的空格被编码
对URI组件进行编码和解码
要对URI中具有特殊含义的所有字符串字符进行编码和解码,包括(但不限于)/、&和:,请使用
encodeComponent()和decodeComponent()方法。
var uri = 'http://example.org/api?foo=some message';
var encoded = Uri.encodeComponent(uri);
assert(encoded ==
'http%3A%2F%2Fexample.org%2Fapi%3Ffoo%3Dsome%20message');
var decoded = Uri.decodeComponent(encoded);
assert(uri == decoded);
注意每个特殊字符是如何编码的。例如,/被编码为%2F。