小编典典

URLEncoder 无法翻译空格字符

all

我期待

System.out.println(java.net.URLEncoder.encode("Hello World", "UTF-8"));

输出:

Hello%20World

(20 是空格的 ASCII 十六进制代码)

但是,我得到的是:

Hello+World

我使用了错误的方法吗?我应该使用什么正确的方法?


阅读 135

收藏
2022-06-10

共1个答案

小编典典

这表现如预期。URLEncoder实现了有关如何在 HTML 表单中编码 URL 的 HTML 规范。


javadocs

此类包含用于将 String 转换为 application/x-www-form-urlencoded MIME 格式的静态方法。

并来自 HTML 规范

应用程序/x-www-form-urlencoded

使用此内容类型提交的表单必须编码如下:

  1. 控件名称和值被转义。空格字符替换为 `+’

您将不得不更换它,例如:

System.out.println(java.net.URLEncoder.encode("Hello World", "UTF-8").replace("+", "%20"));
2022-06-10