Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 空间编码为+;和URL中的%20_Java_Url_Encoding_Query String - Fatal编程技术网

Java 空间编码为+;和URL中的%20

Java 空间编码为+;和URL中的%20,java,url,encoding,query-string,Java,Url,Encoding,Query String,URL中带有空格的页面无法正确翻译: i、 e 发布/反映在Plano住房市场的国家趋势/9778767.html 或 给404。请注意,“新闻稿”编码为“新闻稿” 然而,在“新闻稿”编码为“新闻+新闻稿”的情况下,以下两个版本可以很好地工作 文章用加号或十六进制空格%20解析得很好。 +和%20都表示空格。那么为什么会有这种行为 而且,在java中,我可以使用什么来获得正确的编码URL +和%20都表示空格 仅在查询字符串中。在URL的其他地方,加号是加号,而不是空格。在这种情况下,we

URL中带有空格的页面无法正确翻译: i、 e

发布/反映在Plano住房市场的国家趋势/9778767.html

给404。请注意,“新闻稿”编码为“新闻稿”

然而,在“新闻稿”编码为“新闻+新闻稿”的情况下,以下两个版本可以很好地工作

文章用加号或十六进制空格%20解析得很好。

+和%20都表示空格。那么为什么会有这种行为

而且,在java中,我可以使用什么来获得正确的编码URL

+和%20都表示空格

仅在查询字符串中。在URL的其他地方,加号是加号,而不是空格。在这种情况下,web服务器为两个不同的URL提供相同的内容


但是这两个URL是不同的,它们不是同一URL的替代表示。

官方
+
可能只在查询字符串中使用(在
之后?

这就是URLEncoder的用途:

"?x=" + URLEncoder.encode("Hello World", "UTF-8");
"?x=" + URLEncoder.encode("ŝi estas ĉarma", "UTF-8");

?x=Hello+World
?x=%C5%9Di+estas+%C4%89arma
更通用的类URI遵循要替换的空间规范,使用%

URI uri = new URI("http", "www.streetinsider.com",
    "/Press Releases/National Trends Reflected in Plano Housing Market/9778767.html",
    "?x=ŝi estas ĉarma");
String u = uri.toString();

http://www.streetinsider.com/Press%20Releases/National%20Trends%20
Reflected%20in%20Plano%20Housing%20Market/9778767.html#?x=ŝi%20estas%20ĉarma
有时会遇到URI作为文件和其他文件的泛化,然后必须小心不要在文件名中引入%20

因此,可能有一个部分重新映射在街道边的
+
,甚至
%20
,就像它看起来的那样;以达到相同的代码。

您的声明

Both + and %20 represent spaces. 
并非在所有情况下都完全正确

空格字符只能在一个上下文中编码为“+”:application/x-www-form-urlencoded键值对

RFC-1866(HTML 2.0规范),第8.2.1段。第1分段。说明:“表单字段名和值被转义:空格字符被“+”替换,然后保留字符被转义”)

以下是URL中此类字符串的示例,其中RFC-1866允许将空格编码为加号:“”。因此,只有在“?”之后,空格才能被加号替换(在其他情况下,空格应编码为%20)。在以后的HTML规范中也给出了这种对表单数据进行编码的方法,例如,查找有关application/x-www-form-urlencoded in HTML4.01规范的相关段落,等等

您提供的URL不是包含键/值对的表单数据,它只是指向9778767.html文件的路径:

http://www.streetinsider.com/Press%20Releases/National+Trends+Reflected+in+Plano+Housing+Market/9778767.html
所以,在这里使用加号是违法的。在这种情况下,正确的URL应该是:

http://www.streetinsider.com/Press%20Releases/National%20Trends%20Reflected%20in%20Plano%20Housing%20Market/9778767.html