我使用的是旧版ASP.NET Web应用程序,该应用程序具有使用查询字符串值在页面之间传递信息的URL。我遇到了几个URL,其中包含我要理解的空格,数字和破折号。
以下是网址的示例:
http://myserver.com/SelectReport.aspx?Name=My Report&ReportFile=my_financial_report&ReportTitle=My Financial Planning Across A 1-Year Or 2-Year Outlook
URL的问题部分是ReportTitle
查询字符串值。
当我单击Internet Explorer 11或Microsoft Edge中的链接时,出现Cant' reach this page. It took too long to connect to this website. Error Code: INET_E_CONNECTION_TIMEOUT
错误。应该注意的是,如果我在Internet Explorer 11中打开 ON 兼容性视图设置,则该链接会正常工作。
当我单击Google Chrome浏览器中的链接时,我得到一个“无法访问此网站”。连接被重置。 ERR_CONNECTION_RESET”错误。
如果我删除2
中的2-Year
,则该链接有效。但是,如果我删除1
中的1-Year
并留下2-Year
,该链接将无法工作。 我想知道为什么删除2
中的2-Year
可以使链接起作用,但是删除1
中的1-Year
却不能。无论是否用%20
替换空格,都是如此。有人知道答案吗?
我知道我可以用加号(ReportTitle
)来代替+
查询字符串值中的空格,它将起作用。这可能是我要解决此问题的方法,但我希望能更好地理解该问题。
谢谢!
答案 0 :(得分:0)
这是我在原始帖子中继续发表评论的内容。我正在编写此答案以分享演示示例。这可能不是一个完整的答案。
当您有空格,或者空格被Color.argb()
替换或空格被 String st = "test1@gmail.com,"
+ "test2@gmail.com,"
+ "test@yahoo.com,"
+ "test@hotmail.com,"
+ "test@rediff.com,"
+ "test@rediff.com,"
+ "wer@gmailcom";
st.trim();
String[] total = st.split("\\,");
List<String> unique = new ArrayList<>();
List<String> duplicate = new ArrayList<>();
Arrays.stream(total)
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
.forEach((k, v) -> {
if (v > 1) {
duplicate.add(k);
} else {
unique.add(k);
}
});
替换时,绝对没有区别。另外,我之前提到过,您的网址包含有效字符,包括%20
。
请参阅下面的三个链接。我怀疑是您的应用程序正在处理URL编码,解码和出现问题。这不是普遍问题。
+