tomcat解決亂碼問題

        最近優化工作項目時出現了亂碼問題。

        原本項目在eclipse中運行是沒有出現上傳數據亂碼問題的,但是當把編譯好的項目單獨放到Tomcat下運行時,就出現了亂碼問題了。

        在網上查詢了許多方法,雖然說不能都有效的解決我的問題,但也可以解決一些基本的問題。

        在tomcat8之前的編碼集默認是ISO8859-1,tomcat8及其以後,是UTF-8。這時使用GET請求的中文參數就不需要再另行處理亂碼問題,而用POST請求中文參數時,就需要設置編碼集。

方法一:在使用中文參數前將中文字符“name”設爲“UTF-8”;

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

方法二:利用request.setCharacterEncoding(“UTF-8”);來設置的Tomcat的的接收請求的編碼格式,但是這個方法只對POST方式提交的數據有效,對GET方式提交的數據無效!

方法三:修改tomcat路徑下:“\ apache-tomcat-7.0.90 \ conf”的server.xml文件,設置URIEncoding =“UTF-8”,但是這種配置設置編碼的方法只對get請求有效但是對於POST請求沒有用。

 <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="UTF-8" />

方法四:在項目的web.xml中設置攔截器,將編碼設置爲utf-8。這個方法個人覺得比較實用。
        <filter-class> org.openredhead.springx.core.web.mvc.support.CharacterEncodingFilter < filter-class>:自己寫的攔截器
        <filter-class> org.apache.catalina.filters.SetCharacterEncodingFilter </ filter-clas s>:Tomcat的內置的攔截器

<!-- Character Encoding filter 將編碼定爲UTF-8  -->
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.openredhead.springx.core.web.mvc.support.CharacterEncodingFilter</filter-class>
		<!-- <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>  --> 
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param> 
		<init-param>  
            <param-name>forceEncoding</param-name>  
            <param-value>true</param-value>  
        </init-param>  
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

方法五:修改Tomcat下的bin下的catalina.bat,在最前面添加設置JAVA_OPTS = -Dfile.encoding = UTF-8。但是這種做法也達不到想要的效果,而且tomcat打印的日誌也會亂碼。

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