我期待
System.out.println(java.net.URLEncoder.encode("Hello World", "UTF-8"));
输出:
Hello%20World
(20 是空格的 ASCII 十六进制代码)
但是,我得到的是:
Hello+World
我使用了错误的方法吗?我应该使用什么正确的方法?
这表现如预期。URLEncoder实现了有关如何在 HTML 表单中编码 URL 的 HTML 规范。
URLEncoder
从 javadocs :
此类包含用于将 String 转换为 application/x-www-form-urlencoded MIME 格式的静态方法。
并来自 HTML 规范 :
应用程序/x-www-form-urlencoded 使用此内容类型提交的表单必须编码如下: 控件名称和值被转义。空格字符替换为 `+’
应用程序/x-www-form-urlencoded
使用此内容类型提交的表单必须编码如下:
您将不得不更换它,例如:
System.out.println(java.net.URLEncoder.encode("Hello World", "UTF-8").replace("+", "%20"));