0

我需要一个字符来分隔一个字符串中的两个或多个 URI。稍后我将拆分字符串以分别获取每个 URI。

问题是我不确定在这里选择什么角色。这里是否有一个绝对不能成为 URI 本身一部分的好字符可供选择?或者最终几乎所有字符都可以在 URI 中使用?

我知道某些字符在 URI 的某些部分是非法的,但我说的是整个 URI,如下所示:

scheme://username:password@domain.tld/path/to/file.ext?key=value#blah

我在想也许space,尽管从技术上讲,我认为这可能是密码的一部分,还是会像%20在那种情况下那样被转义?

4

1 回答 1

0

任何控制字符都应该适用于此,例如 TAB、FF 等。

RFC3986 (a)控制 URI 规范,该 RFC 的附录 A规定字符限于:

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
0123456789-._~:/?#[]@!$&'()*+,;=

%当然还有编码字符,对于上面未列出的所有其他字符)。

所以,基本上,任何其他字符都应该可以作为分隔符。


(a)这实际上已被 RFC6874 扩充,它与更改 URI 的 IPv6 部分有关,添加了一个区域标识符。由于区域 ID 由%上面已经包含的“未保留”字符组成,因此它不会更改允许的字符集。

于 2013-08-14T09:24:13.280 回答