`URLEncoder.encode` 的正确编码

The right encoding for `URLEncoder.encode`

我正在尝试标准化我 URL 中的消息,并且我正在使用 URLEncoder.encode。我遇到的问题是,输出似乎不是有效的 URL。例如

val text = Some("test question (a) x (b) y").get
val query = "http://localhost:8080/ask?text=" + text
println(query)
val queryEnc = URLEncoder.encode(query, "UTF-8")
println(queryEnc)

输出:

http://localhost:8080/ask?text=test question (a) x (b) y
http%3A%2F%2Flocalhost%3A8080%2Fask%3Ftext%3Dtest+question+%28a%29+x+%28b%29+y

输出是否有效URL? (它看起来无效,因为 Chrome 和我机器上的 Safari 无法识别它)。

您必须对每个参数值进行编码。不是整个URL.

val query = "http://localhost:8080/ask?text=" + URLEncoder.encode(text, "UTF-8")