我想发送一个 URI 作为查询/矩阵参数的值。在将其附加到现有 URI 之前,我需要根据 RFC 2396 对其进行编码。例如,给定输入:
http://google.com/resource?key=value1 & value2
我期望输出:
http%3a%2f%2fgoogle.com%2fresource%3fkey%3dvalue1%2520%26%2520value2
两者都java.net.URLEncoder
不会java.net.URI
产生正确的输出。URLEncoder
用于 HTML 表单编码,与 RFC 2396 不同。URI
没有一次编码单个值的机制,因此它无法知道 value1 和 value2 是同一个键的一部分。