其實解決這個問題就是要保證整個數據插入過程當中字符編碼要一致。要有三個方面注意的,java
第一個是msyl數據庫,就是保證mysql的數據庫以及表都要保證編碼是一致的好比都是UTF-8,mysql
第二個是,eclipse這邊也要保證項目,工做空間和java文件的編碼格式也是UTF-8,web
第四個是,jsp頁面傳值過程當中可能亂碼,<%request.setCharacterEncoding("UTF-8"); %>,防止頁面傳值的時候亂碼————————————————————————————————————————————------spring
一、針對Post方式提交的請求若是出現亂碼,能夠每次在request解析數據時設置編碼格式:sql
request.setCharacterEncoding("utf-8");數據庫
也可使用編碼過濾器來解決,最經常使用的方法是使用spring提供的編碼過濾器:tomcat
在Web.xml中增長以下配置(要注意的是它的位置必定要是第一個執行的過濾器):服務器
<filter>
<filter-name>charsetFilter</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>mybatis
該過濾器要作的其實就是強制爲全部請求和響應設置編碼格式:eclipse
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
二、針對Get方式的亂碼問題,因爲參數是經過URL傳遞的,因此上面經過request設置的編碼格式是不起做用的,此時能夠在每次發生請求以前對URL進行編碼:例如:Location.href="/encodeURI"("http://localhost/test/s?name=中文&sex=女");
固然也有更簡便的方法,那就是在服務器端配置URL編碼格式:
修改tomcat的配置文件server.xml:
<Connector URIEncoding="UTF-8"
port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
connectionTimeout="20000" disableUploadTimeout="true" />
只需增長 URIEncoding="UTF-8" 這一句,而後重啓tomcat便可。