使用springmvc將表單提交的資料存至資料庫然後顯示,當提交的資料有中文時,可能會出現資料庫中的中文亂碼現象
整個資料流轉流程,如下圖所示:
表單資料提交 —> controller資料接收 —>service呼叫資料庫 —>資料庫儲存
其中主要有三個流轉過程:
1.頁面表單到controller,2.連線資料庫,3.資料庫識別sql進行資料儲存
這3方面都有可能導致編碼錯亂
大多數情況下,我們都設定成utf-8的形式來處理編碼
這時候就需要對表單資料進行編碼處理,最常見的就是新增編碼過濾器characterencodingfilter
在web.xml中新增如下**:
characterencodingfileter
org.springframework.web.filter.characterencodingfilter
encoding
utf-8
forceencoding
true
/*
這樣伺服器就會對所有的http請求都進行編碼過濾,保證進入到controller中的字元都是utf-8形式的
(當然,表單頁面本身最好也是指定utf-8編碼的,如jsp的話就 pageencoding=『utf-8』)
如果還是最終顯示亂碼,就繼續往下跟
這種最常見,處理方式兩個方面:1.資料庫的預設編碼配置,2.伺服器對資料庫的連線指定編碼
1.檢查修改資料庫編碼配置
以mysql為例,修改編碼配置網上資料很多,我簡單說一下:
2.設定資料庫連線指定編碼
這種情況最容易被忽略,我們在**中連線資料庫時 最好指定編碼&characterencoding=utf-8,因為可能資料庫連線時使用了預設的iso編碼格式,需要我們顯式地指定編碼格式。如下:
一般指定&characterencoding=utf-8就夠了,不用加上useunicode=true
——————————————————
以上3步設定一般已經可以保證解決中文編碼問題了,尤其是 設定資料庫連線指定編碼,是最有效的
以上是我入坑後的自己的處理辦法,歡迎批評指正
SpringMVC 返回String中文亂碼
spring 返回值為string型別的結果時使用了stringhttpmessageconverter 來轉換部分原始碼如下 public class stringhttpmessageconverter extends abstracthttpmessageconverter可見使用預設的編碼是...
Servlet或springMVC中文亂碼處理
1 如果是get提交,並且tomcat為8.0及以後的版本,tomcat底層已經處理了get提交的中文亂碼問題,所以get提交在tomcat8.0以後的版本沒有中文亂碼問題!2 如果請求是get提交,並且tomcat是7.0及以前的版本,get提交的中文引數,在獲取時會出現亂碼問題!解決方法 在 t...
php的中文資料是亂碼,php資料庫中文亂碼
mysql是我們專案中非經常常使用的資料型資料庫。可是由於我們須要在資料庫儲存中文字元,所以經常遇到資料庫亂碼情況。1 建立資料庫及表時設定字符集,避免出現中文亂碼的方法 建立資料庫create database test character set utf8 collate utf8 genera...