首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UrlDecoder getParameter无法解码包含'%‘的密码

问UrlDecoder getParameter无法解码包含'%‘的密码
EN

Stack Overflow用户
提问于 2021-08-23 22:42:48
回答 1查看 185关注 0票数 1

我有一个java应用程序,在这个应用程序中我使用URLDecoder来解码密码的值。

下面是我代码的一部分:

代码语言:javascript
复制
Map<String, String[]> paramMap = request.getParameterMap();
Set<String> keySet =  paramMap.keySet();
Iterator<String> iterator = keySet.iterator();
while (iterator.hasNext())
        {
            String key = iterator.next();
            if (!key.equals("_")){
            try {
               String value = URLDecoder.decode(request.getParameter(key),"UTF-8");
               System.out.println("Getting parameter("+ key +" = '" + value +"')");
           }
        }

如果值包含“%”,则不会对其进行解码。

我尝试使用getQueryString()来返回包含百分比的字符串,但它没有提取特定参数的方法

代码语言:javascript
复制
String requestParamValue = URLDecoder.decode(request.getQueryString(),"UTF-8");

这将返回:

代码语言:javascript
复制
Request raw param decoded is feature=check&userid=xyz@gmail.com&password=Asp%8]a/Asp%8]a/

有没有办法让包含'%‘的字符串使用request.getParameter(键)解码url

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-23 22:56:08

百分比符号是URL编码中的保留字符,因此必须对其本身进行编码。如果请求错误,servlet应该会失败。

为密码参数提供的字符串应该是URL编码的。在java中这样做:

代码语言:javascript
复制
String result = java.net.URLEncoder.encode("Asp%8]a/Asp%8]a/",java.nio.charset. StandardCharsets.UTF_8.name());
result ==> "Asp%258%5Da%2FAsp%258%5Da%2F"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68899817

复制
相关文章

相似问题

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