解决在Tomcat7.0以上版本,Invalid character found in the request target问题

在JSP界面中,用AJAX与数据库交换数据,向后台传了带中文的参数。
当用Tomcat6.0时,没有任何错误。在前台直接传的中文,没有转码,只是在后台接收的时候用的下面这条语句:

String search =new String( request.getParameter("search").getBytes("ISO-8859-1"),"GBK");

search就是我传的参数。
但是用Tomcat7.0时便出现了以下的问题:

十一月 07, 2017 8:58:42 下午 org.apache.coyote.http11.AbstractHttp11Processor process
信息: Error parsing HTTP request header
 Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

在网上又是查了好多的资料,发现Tomcat7.0以上的版本好像都有这种错误,那么解决的方法就有那么两种(或许有别的,但我就不清楚了)
1. 当然是换低版本的Tomcat,我用的是Myeclipse 10.0 内置的Tomcat是6.0版本
2. 把要传的值转换,用的语句是

search=encodeURI(search);

后台接收代码变为:

String search =new String( request.getParameter("search").getBytes("ISO-8859-1"),"UTF-8");

这样问题就完美解决了。
或许报这种错,但传的不是中文的,我在查找的过程中有说如何解决传的不是中文,如何转码的问题,链接如下:
http://blog.csdn.net/sujiacheng_123/article/details/75331497
还有一个是写原因的,链接也贴出来:
http://blog.csdn.net/laokaizzz/article/details/60752593

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章