作web項目的時候,多多少少會出現中文亂碼問題。
對於jsp頁面表單提交,controller接收亂碼,保存到數據庫中文亂碼等問題,統一給出幾種亂碼的解決方式。html
1.項目編碼沒有設置爲utf8java
有一些廣泛的亂碼問題,是由於咱們在建立web項目或者是導入別人的web項目的時候,沒有設置項目的編碼。項目沒設置utf-8編碼會致使中文亂碼。
2.確保數據庫編碼爲utf8,以mysql爲例,可到mysql目錄下,my.ini文件中修改後,重啓mysql服務mysql
重啓mysql服務方法:web
3.數據庫建庫時,確認編碼爲utf-8,以使用Navicat爲例spring
4.在jsp頁面亂碼問題sql
能夠在 jsp的頂端加入;數據庫
<%@ page language=」java」 import=」java.util.*」 pageEncoding=」UTF-8」%>
Head中加入tomcat
<meta http-equiv=」Content-Type」 content=」text/html; charset=UTF-8」>
form表單的提交方式設爲 「Post」app
5.若是使用的是spring,能夠在項目的web.xml中加入:jsp
<filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</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>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
6.在java代碼的controller層或者是form表單提交的action中,設置:
request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8");
7.tomcat設置
打開tomcat安裝路徑下的conf-server.xml 文件:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true"/>
以上7種基本上是用來解決jsp頁面表單提交,controller接收亂碼,數據庫亂碼等問題,通常4,5,6方法最經常使用也是關係最大的。
好比我有寫form表單,提交數據到數據庫的時候,打開數據庫發現中文亂碼,設置什麼utf-8之類的都是設置了的。
因而採用第5種方式,加入字符過濾器。
如圖:
web.xml中:
效果: