我有
let urlString = "https://example.com/[path]/file.txt"
。
如何创建 URL 对象,但保留方括号而不将其转换为 %5B 和 %5D。
谢谢!
TL;DR:你不能,按设计。那不是一个有效的 URL,所以不能用
URL
来表达。
长版:
URI 的
path
部分(包括 URL)由 RFC 3986 第 3.3 节 定义。每个段中允许出现的字符(/
之间)称为pchar
,定义如下:
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded = "%" HEXDIG HEXDIG
sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "="
[
和 ]
不在该列表中,因此不能在路径中。您必须对它们进行百分比编码。
您可以自由创建包含这些字符的字符串,但它不能是 URL。