我需要一个字符来分隔一个字符串中的两个或多个URI。稍后我将拆分字符串以分别获取每个URI。
问题是我不确定在这里挑选什么角色。在这里选择一个好的角色肯定不能成为URI本身的一部分吗?或者最终是URI中允许的所有字符?
我知道某些字符在URI的某些部分是非法的,但我在谈论一个整体的URI,如下所示:
scheme://username:password@domain.tld/path/to/file.ext?key=value#blah
我想也许space
,虽然从技术上来说我认为这可能是密码的一部分,或者在这种情况下是否会以%20
转义?
答案 0 :(得分:0)
任何控制字符都应该是好的,例如TAB,FF等。
RFC3986 (a)控制URI的规范和Appendix A表明字符仅限于:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
0123456789-._~:/?#[]@!$&'()*+,;=
(以及%
编码字符,当然,对于上面未列出的所有其他字符。)
所以,基本上,任何其他角色都可以作为分隔符。
(a) RFC6874实际上增强了这一点,它与URI的IPv6部分的更改有关,添加了区域标识符。由于区域ID由上面已包含的%
和“未保留”字符组成,因此不会更改允许的字符集。