单参数构造函数要求将其参数中的所有非法字符都用引号引起来,并保留所有转义的八位位组和其他存在的字符。
多参数构造函数根据出现它们的组件的需要引用非法字符。这些构造函数始终引用百分号(’%’)。任何其他字符都将保留。
因此,URI(String)期望您对所有内容进行正确编码,并假定%2F
将被解码为的编码八进制数/
。
其他构造函数将对%
字符进行结尾编码(导致%252F
输入%2F
),因此在解码后仍会得到%2F
。
我假设建设者之间的偏差的目的是为了让喜欢的事物new URI(otherUri.toString())
与toString()
返回一个完全编码URI。