最近在做項目自測的時候發現,每次輸入查詢條件為中文時,后端Controller層中請求的的VO中都是亂碼,第一次遇到沒有頭緒,于是開始了各種排除法
一、在jsp中,頁面的編碼很明確:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>二、在Controller層,打印出默認的編碼格式,也是UTF-8,打印方式:System.out.PRintln(request.getCharacterEncoding());三、查看IDE編碼方式,毫無疑問都是UTF-8。這我就奇了怪了,所有編碼方式都一致,怎么可能還會有錯,思前想后,從頁面表單中提交的數據在Java程序里顯示亂碼,還有一種可能就是Tomcat的編碼沒有設置,tomcat的默認編碼是iso8859-1,而程序的默認編碼為UTF-8,這里出現了沖突,所以修改tomcat下的conf/server.xml文件。
找到如下代碼: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />這段代碼規定了Tomcat監聽HTTP請求的端口號等信息。
修改為如下情況
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
就可以啦!
新聞熱點
疑難解答