在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