排查緣由:打斷點,查看究竟是在執行存數據庫操做以前就已經亂碼了,仍是存數據庫操做後亂碼的。mysql
一、前者解決方案:web
在web.xml裏面加上:spring
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<async-supported>true</async-supported>
<init-param:>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在配置jdbc數據源的時候加上:
jdbc:mysql://127.0.0.1:3306/logistics?useUnicode=true&characterEncoding=UTF-8
二、若爲後者存數據庫操做後亂碼,解決方案:
登陸數據庫,執行以下sql:
show variables like 'character%';sql
結果:數據庫
| character_set_client | utf8 |app
| character_set_connection | utf8 |async
| character_set_database | latin1 |編碼
| character_set_filesystem | binary |url
| character_set_results | utf8 |spa
| character_set_server | latin1 |
| character_set_system | utf8 |
說明在安裝數據庫的時候,character_set_database,character_set_server編碼格式設置錯誤。
解決:
找到mysql安裝路徑下的my.cnf文件在[mysqld]下添加以下兩行:
character_set_server=utf8
init_connect='SET NAMES utf8'
再次查看(注意:修改事後mysql的服務必定要重啓纔會生效),問題解決:
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8