如何使用java从查询字符串中读取参数和值?

thn*_*iss 5 java url servlets character-encoding

我从谷歌代码使用Ciui,所有请求只是GET请求而不是POST.这些电话是由ajax发出的(我不确定).我需要知道如何从这个URL读取"searchstring"参数.当我使用getQueryString()方法在我的Servlet中读取它时,我无法正确地形成实际文本.这个unicode(当%替换为/时)就像文本一样实际上是中文的.请让我如何解码搜索字符串并创建字符串.

http://xxxx.com?searchString=%u8BF7%u5728%u6B64%u5904%u8F93%u5165%u4EA7%u54C1%u7F16%u53F7%u6216%u540D%u79F0&button=%E6%90%9C%E7%B4%A2

另一个参数是适当的百分比编码,我能够使用URL解码进行解码.提前致谢.

Ste*_*azo 7

好吧,在我的情况下,我有来自其他来源的查询字符串,所以你可能需要这个:

    public static Map<String, String> getQueryMap(String query)  
{  
    String[] params = query.split("&");  
    Map<String, String> map = new HashMap<String, String>();  
    for (String param : params)  
    {  String [] p=param.split("=");
        String name = p[0];  
      if(p.length>1)  {String value = p[1];  
        map.put(name, value);
      }  
    }  
    return map;  
} 
Run Code Online (Sandbox Code Playgroud)

那么你可以使用:

 Map params=getQueryMap(querystring);
 String id=(String)params.get("id");
 String anotherparam=(String)params.get("anotherparam");
Run Code Online (Sandbox Code Playgroud)


Mic*_*rdt 2

您对这些汉字的编码方案实际上违反了网络标准(即RFC 3986):百分号是保留字符,除了标准百分比编码之外不得使用。

我强烈建议您使用标准编码方案(UTF-8 字节和百分比编码);那么你可以简单地使用标准getParameter()方法。如果您坚持违反标准,那么很可能无法在符合标准的 servlet 容器中解决您的问题。