解決在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

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