1. 程式人生 > >jsp頁面表單提交,controller接收亂碼,數據庫亂碼等解決方法

jsp頁面表單提交,controller接收亂碼,數據庫亂碼等解決方法

ren ping redirect etc 打開數據庫 解決方法 ews web ext

1.web項目出現亂碼問題

做web項目的時候,多多少少會出現中文亂碼問題。
對於jsp頁面表單提交,controller接收亂碼,保存到數據庫中文亂碼等問題,統一給出幾種亂碼的解決方式。

1.項目編碼沒有設置為utf8

有一些普遍的亂碼問題,是因為我們在創建web項目或者是導入別人的web項目的時候,沒有設置項目的編碼。項目沒設置utf-8編碼會導致中文亂碼。

技術分享圖片技術分享圖片

技術分享圖片

2.確保數據庫編碼為utf8,以mysql為例,可到mysql目錄下,my.ini文件中修改後,重啟mysql服務

技術分享圖片

重啟mysql服務方法:

技術分享圖片技術分享圖片

技術分享圖片技術分享圖片

3.數據庫建庫時,確認編碼為utf-8,以使用Navicat為例

技術分享圖片技術分享圖片

4.在jsp頁面亂碼問題

可以在 jsp的頂端加入;

<%@ page language=”java” import=”java.util.*” pageEncoding=”UTF-8”%>
  • 1

Head中加入

<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8”>
  • 1

form表單的提交方式設為 “Post”

5.如果使用的是spring,可以在項目的web.xml中加入:

<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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

6.在java代碼的controller層或者是form表單提交的action中,設置:

request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8"); 
  • 1
  • 2

7.tomcat設置

打開tomcat安裝路徑下的conf-server.xml 文件:

<Connector port="8080" protocol="HTTP/1.1"  connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true"/>
  • 1
  • 2

以上7種基本上是用來解決jsp頁面表單提交,controller接收亂碼,數據庫亂碼等問題,一般4,5,6方法最常用也是關系最大的。
比如我有寫form表單,提交數據到數據庫的時候,打開數據庫發現中文亂碼,設置什麽utf-8之類的都是設置了的。
於是采用第5種方式,加入字符過濾器。
如圖:
技術分享圖片

web.xml中:
技術分享圖片
效果:
技術分享圖片

jsp頁面表單提交,controller接收亂碼,數據庫亂碼等解決方法