设为首页 收藏本站
查看: 835|回复: 0

[经验分享] 解决URL参数中的%问题(org.apache.tomcat.util.http.Parameters processParameters Paramete)

[复制链接]
累计签到:1365 天
连续签到:1 天
发表于 2017-1-14 10:12:18 | 显示全部楼层 |阅读模式
测试最近的代码发现,有一个servlet处理通过post方式传递过来的参数的时候偶尔出现乱码,并提示错误“org.apache.tomcat.util.http.Parameters processParameters  Parameters: Character decoding failed”,开始以为是编码问题,google了一大堆关于编码的问题,各种测试还是无法解决这个问题。于是把出错的参数调了出来用类似二分法的方式慢慢筛查参数,最后锁定在参数中的%上,因为要传递的参数不是经常出现%,所以就出现偶尔出错的现象。解决方法就是把参数中的“%”替换为“%25”,修改代码为Java代码   DSC0000.png


  • parameter = parameter.replace("%","%25")  

,问题解决。 
下面附录是URL中的特殊字符: 
Java代码  


  • URL中一些字符的特殊含义,基本编码规则如下:   
  • 1、空格换成加号(+)   
  • 2、正斜杠(/)分隔目录和子目录   
  • 3、问号(?)分隔URL和查询   
  • 4、百分号(%)制定特殊字符   
  • 5、#号指定书签   
  • 6、&号分隔参数   
  •   
  • 如果需要在URL中用到,需要将这些特殊字符换成相应的十六进制的值   
  • +   %20   
  • /   %2F   
  • ?   %3F   
  • %   %25   
  • #   %23   
  • &   %26  


  <iframe style="font-size: 12px; line-height: 18px;" src="http://lwjlaser.iteye.com/iframe_ggbd/187" frameborder="0" scrolling="no" width="468" height="60"></iframe>
3 

3 


分享到:  DSC0001.jpg   DSC0002.jpg

Ubuntu中无法修改Chrome默认字体的问题 | MySQL数据库备份和还原的常用命令


  • 2011-05-23 15:36
  • 浏览 11444
  • 评论(5)
  • 分类:编程语言
  • 相关推荐

评论
5 楼 lwjlaser 2011-05-25  
Technoboy 写道
ilrxx 写道
传参数之前urlencode一次下,然后接受参数后再urldecode一下就行了啊

对于不同的字符集,encode一次是不行的,必须encode两次!

求详细解答。encode两次编码格式是一样的吗?是不是也需要解码两次?

4 楼 Technoboy 2011-05-24  
ilrxx 写道
传参数之前urlencode一次下,然后接受参数后再urldecode一下就行了啊

对于不同的字符集,encode一次是不行的,必须encode两次!

3 楼 ilrxx 2011-05-24  
传参数之前urlencode一次下,然后接受参数后再urldecode一下就行了啊

2 楼 lwjlaser 2011-05-24  
Technoboy 写道
DSC0003.gif  
引用
parameter = parameter.replace("%","%25") 

为什么这么做的原因,就是因为编码问题!
浏览器会两次encode我们的参数,服务器会decode一次,不同服务器decode的结果也不一样,tomcat默认用ISO-8859-1字符集decode。然后我们自己decode一次。
规则类似于:java.net.URLEncoder和URLDecoder。


对,我也查到了,不过我用的HttpURLConnection发的post,HttpURLConnection没有对url参数进行编码。所以会产生那样的错误。以后可以直接使用java.net.URLEncoder对url参数先进行编码。

1 楼 Technoboy 2011-05-23  
 
引用
parameter = parameter.replace("%","%25") 

为什么这么做的原因,就是因为编码问题! 
浏览器会两次encode我们的参数,服务器会decode一次,不同服务器decode的结果也不一样,tomcat默认用ISO-8859-1字符集decode。然后我们自己decode一次。 
规则类似于:java.net.URLEncoder和URLDecoder。
 
本文来源于:http://lwjlaser.iteye.com/blog/1055359

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-328228-1-1.html 上篇帖子: 转载:Apache FTPClient操作“卡死”问题的分析和解决 下篇帖子: 调用org.apache.tools.zip包,从压缩包中提取文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表