我正在尝试获取jee中的url参数。所以我有这样的url:
http://MySite/MySite.jsp?page=recherche&msg=toto首先,我尝试使用:request.getParameter("msg").toString();,它工作得很好,但是如果我尝试搜索"c++“,"getParameter()”方法返回"c“而不是"c++”,我理解。
所以我尝试了另一种方法。我获取当前URL并对其进行解析,以获得消息的值:
String msg[]= request.getQueryString().split("msg=");
message=msg[1].toString();它现在适用于研究"c++“,但现在我不能搜索口音。我能做些什么?
编辑1
我将消息编码到url中。
String urlString=Utils.encodeUrl(request.getParameter("msg"));
因此,对于网址:http://MySite/MySite.jsp?page=recherche&msg=c++
我有这个编码的网址:http://MySite/MySite.jsp?page=recherche&msg=c%2B%2B
当我需要它的时候,我解码URL的消息
String decodedUrl = URLDecoder.decode(url, "ISO-8859-1");谢谢大家
发布于 2013-12-04 00:02:13
您通过"get“方法发送的任何内容都将作为url的一部分,如果它至少包含一个保留字符,则需要对其进行urlencoded以使其有效。因此,任何字符都需要在发送前进行编码。
为了发送c++,您必须发送c%2B%2B。这将在服务器端得到正确的解释。
这里有一些你可以查看的参考资料:
http://www.blooberry.com/indexdot/html/topics/urlencoding.htm
现在的问题是,如何以及在哪里生成URL?根据语言的不同,您需要使用适当的方法对字符串进行编码。
发布于 2013-12-04 00:02:27
如果我尝试搜索"c++“,方法"getParameter()”返回"c“而不是"c++”
查询参数被视为application/x-www-form-urlencoded,因此URL中的+字符表示参数值中的空格字符。如果要发送+字符,则需要在URL中将其编码为%2B。
http://MySite/MySite.jsp?page=recherche&msg=c%2B%2B这同样适用于重音字符,它们需要作为其UTF-8表示的字节进行转义,因此été需要为:
msg=%C3%A9t%C3%A9(é是Unicode字符U+00E9,这是UTF-8中的C3 A9 )。
简而言之,这不是这段代码的错误,而是任何负责在客户端构造URL的组件的错误。
发布于 2013-12-04 00:02:10
使用调用您的URL
msg=c%2B%2BURL中的+表示“空格”。它需要被转义。
https://stackoverflow.com/questions/20355769
复制相似问题