首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getParameter特殊字符

getParameter特殊字符
EN

Stack Overflow用户
提问于 2013-12-03 23:57:11
回答 4查看 4.2K关注 0票数 2

我正在尝试获取jee中的url参数。所以我有这样的url:

代码语言:javascript
复制
http://MySite/MySite.jsp?page=recherche&msg=toto

首先,我尝试使用:request.getParameter("msg").toString();,它工作得很好,但是如果我尝试搜索"c++“,"getParameter()”方法返回"c“而不是"c++”,我理解。

所以我尝试了另一种方法。我获取当前URL并对其进行解析,以获得消息的值:

代码语言:javascript
复制
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的消息

代码语言:javascript
复制
String decodedUrl = URLDecoder.decode(url, "ISO-8859-1");

谢谢大家

EN

回答 4

Stack Overflow用户

发布于 2013-12-04 00:02:13

您通过"get“方法发送的任何内容都将作为url的一部分,如果它至少包含一个保留字符,则需要对其进行urlencoded以使其有效。因此,任何字符都需要在发送前进行编码。

为了发送c++,您必须发送c%2B%2B。这将在服务器端得到正确的解释。

这里有一些你可以查看的参考资料:

http://www.blooberry.com/indexdot/html/topics/urlencoding.htm

现在的问题是,如何以及在哪里生成URL?根据语言的不同,您需要使用适当的方法对字符串进行编码。

票数 1
EN

Stack Overflow用户

发布于 2013-12-04 00:02:27

如果我尝试搜索"c++“,方法"getParameter()”返回"c“而不是"c++”

查询参数被视为application/x-www-form-urlencoded,因此URL中的+字符表示参数值中的空格字符。如果要发送+字符,则需要在URL中将其编码为%2B

代码语言:javascript
复制
http://MySite/MySite.jsp?page=recherche&msg=c%2B%2B

这同样适用于重音字符,它们需要作为其UTF-8表示的字节进行转义,因此été需要为:

代码语言:javascript
复制
msg=%C3%A9t%C3%A9

(é是Unicode字符U+00E9,这是UTF-8中的C3 A9 )。

简而言之,这不是这段代码的错误,而是任何负责在客户端构造URL的组件的错误。

票数 1
EN

Stack Overflow用户

发布于 2013-12-04 00:02:10

使用调用您的URL

代码语言:javascript
复制
msg=c%2B%2B

URL中的+表示“空格”。它需要被转义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20355769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档