eclipse項目,SSM,前端填寫表單(form元素),提交所填寫的中文「收貨地址」,存到數據庫,出現中文亂碼的問題
(數據表中是亂碼的,從數據庫讀到頁面上的也是亂碼的)前端
修改eclipse項目的編碼格式
說明:Windows下eclipse默認編碼爲GBK。
注意:若是你不介意項目中的中文註釋全亂碼,能夠直接修改。若是介意,建議從新建一個項目,而後用原項目的src文件夾和WebContent文件夾覆蓋新項目的src和WebContent文件夾java
1)用文本編輯器(如記事本),打開tomcat安裝目錄下conf文件夾下的server.xmlmysql
說明:若是不記得安裝路徑,能夠用everything軟件搜索tomcat-
web
2)搜索connectionTimeout="20000"
,加上URIEncoding="UTF-8"
,保存文件。spring
1)若是你是直接在applicationContext.xml中配置數據源,檢查下url的值sql
即下方的<property name="url" value="jdbc:mysql://localhost:3306/easymall?characterEncoding=utf8"/>
看是否寫了characterEncoding=utf8數據庫
<!--配置數據源--> <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/easymall?characterEncoding=utf8"/> <property name="username" value="root"/> <property name="password" value="12345678"/> <!--最大鏈接數--> <property name="maxTotal" value="30"/> <!--最大空閒鏈接數--> <property name="maxIdle" value="10"/> <!--初始化鏈接數--> <property name="initialSize" value="5"/> </bean>
注意(才疏學淺,踩過坑,因此補充一下,輕噴): 不要寫成<property name="url" value="jdbc:mysql://localhost:3306/easymall?useUnicode=true&characterEncoding=utf8"/>
或者<property name="url" value="jdbc:mysql://localhost:3306/easymall?characterEncoding=utf8&useUnicode=true"/>
即不要加上useUnicode=true,不然沒法啓動服務器,沒法訪問頁面,若是報錯了,建議翻下console面板中的控制檯輸出(多往上翻,不要只看最後一塊的報錯信息)apache
我就由於多加了useUnicode=true,遇到下面這2個錯誤
①BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
segmentfault
②Server Tomcat v9.0 Server at localhost failed to start.
tomcat
後來往上翻才發現,它已經提示了我applicationContext.xml中鏈接數據庫的url,useUnicode須要以;爲分隔符(其實就是寫錯了,不該該寫,致使服務器沒法啓動
2)若是你是加載配置文件,則修改配置文件中url的編碼
具體參考此文:SSM解決中文存入數據庫亂碼問題(記錄本身的問題)
通常在新建jsp時注意改過來就行(通常是ISO-8859-1
文件頂部的pageEncoding設置
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
注意:filter中的filter-name的值與filter-mapping中filter-name的值一致
<!-- 避免中文亂碼 --> <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>
BeanFactory not initialized or already closed - call 'refresh' before access ... 的解決方法