我不得不做这样的愚蠢的事情让urlEncoding像其他库(iOS,Javascript ..)一样工作,因为java.net.URLEncoder
有错误或没有写入标准编码:
URLEncoder.encode(normalizeString(str), StandardCharsets.UTF_8.displayName())
.replace("+", "%20")
.replace("%40", "@")
.replace("*", "%2A");
在+
时, *
和@
不是百分比编码。并且...现在它正在编码正斜杠/
。 WTF!对此有一个很好的解释?我使用错误的Charset吗?
答案 0 :(得分:1)
我认为你误解了URLEncoder
的角色。 UrlEncoder
实现了HTML Specifications有关如何对HTML表单中的URL进行编码的方法。
在您的情况下,我认为,库org.apache.commons.text
可能是更好的解决方案。它为您提供了逃避角色的方法。