如RFC 3986中所述,如何对字符串进行百分比编码?即我不想要(IMO,奇怪的)www-url-form-encoded,因为那 是 不同的。
如果重要的话,我正在对不一定是整个 URL 的数据进行编码。
正如您所确定的,标准库不能很好地解决这个问题。
尝试使用 GuavaPercentEscaper
或直接使用其中一个URL 转义器,具体取决于您尝试编码的 URL 的哪一部分。
Guava的 com.google.common.net.PercentEscaper(标记为“Beta”,因此不稳定):
UnicodeEscaper basicEscaper = new PercentEscaper("-", false);
String s = basicEscaper.escape(s);
使用java.net.URLEncoder的解决方法:
try {
String s = URLEncoder.encode(s, "UTF-8").replace("+", "%20");
} catch (UnsupportedEncodingException e) {
..
}