springmvc資料庫中文亂碼問題解決

2021-09-23 16:58:11 字數 1193 閱讀 5168

使用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...