我正在尝试在 jee 中获取 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
我在网址中对消息进行编码
String urlString=Utils.encodeUrl(request.getParameter("msg"));
因此对于 URL:http://MySite/MySite.jsp?page=recherche&msg=c++
我有这个编码的URL:http://MySite/MySite.jsp?page=recherche&msg=c%2B%2B
当我需要它时,我会解码 URL 的消息
String decodedUrl = URLDecoder.decode(url, "ISO-8859-1");
谢谢大家
最佳答案
您通过“get”方法发送的任何内容都会作为 URL 的一部分,需要对其进行 urlencode 编码才能有效,以防它包含至少一个保留字符。因此,任何字符在发送之前都需要进行编码。
为了发送c++
,您必须发送c%2B%2B
。这将在服务器端得到正确解释。
您可以检查以下一些引用:
http://www.blooberry.com/indexdot/html/topics/urlencoding.htm
现在的问题是,如何以及在哪里生成 URL?根据语言,您将需要使用正确的方法来编码字符串。
关于java - 获取参数特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20355769/