为什么urlEncoder.encode不能像其他人一样工作?

时间:2017-11-13 16:44:41

标签: java android character-encoding urlencode url-encoding

我不得不做这样的愚蠢的事情让urlEncoding像其他库(iOS,Javascript ..)一样工作,因为java.net.URLEncoder有错误或没有写入标准编码:

URLEncoder.encode(normalizeString(str), StandardCharsets.UTF_8.displayName())
                    .replace("+", "%20")
                    .replace("%40", "@")
                    .replace("*", "%2A");
+时,

*@不是百分比编码。并且...现在它正在编码正斜杠/。 WTF!对此有一个很好的解释?我使用错误的Charset吗?

1 个答案:

答案 0 :(得分:1)

我认为你误解了URLEncoder的角色。 UrlEncoder实现了HTML Specifications有关如何对HTML表单中的URL进行编码的方法。

在您的情况下,我认为,库org.apache.commons.text可能是更好的解决方案。它为您提供了逃避角色的方法。