日期:2014-05-18  浏览次数:20688 次

有人有过这样的经历没有?Jsp通过Url中文或英文传参中出现百分号,报十六进制错误
只要在你的Url参数里放一个百分号。Tomcat 的catalina.log 就报 java.io.CharConversionException: isHexDigit 错误。

比如xxx.jsp?id=12%3 xxx.jsp?id=%123  
如果是放在尾:xxx.jsp?id=123%

那么就会报 java.io.CharConversionException: EOF

找了几天的答案,发现是通过字符串转换异常引起的。由于我是在改一个网站。数据提交的页面太多,所以只好从接收数据的页面改起,因为只有几个页面。但发现用 URLDecoder.decode(name,"UTF-8") URLDecoder.decode(name,"gb2312") 都无法解决。只要出现百分号,日志里面就报这个错。而传过来的参数又是中文。那里不可能修改,页面太多了。

用 request.getParameter("bname").replaceAll("%",""); 也不行。

有什么办法可以使url 里面不管出现什么数据,日志里面不报错吗?

------解决方案--------------------
你把 % 替换为 %25 就可以了!!!
------解决方案--------------------
?如果我的经验没错,这个转换应该是form自动转换的。

如果url是你的程序生成的,那就只能自己替换了!

你到 www.baidu.com 搜索 % 就知道了, 看地址栏