eclipse SSM項目,前端填寫表單往數據表存數據,中文亂碼,致使後端顯示也亂碼

問題描述

eclipse項目,SSM,前端填寫表單(form元素),提交所填寫的中文「收貨地址」,存到數據庫,出現中文亂碼的問題
(數據表中是亂碼的,從數據庫讀到頁面上的也是亂碼的)
image.png前端

 
 
 

可能

1.eclipse項目編碼格式(這個估計最影響)

修改eclipse項目的編碼格式
 
說明:Windows下eclipse默認編碼爲GBK。
 
注意:若是你不介意項目中的中文註釋全亂碼,能夠直接修改。若是介意,建議從新建一個項目,而後用原項目的src文件夾和WebContent文件夾覆蓋新項目的src和WebContent文件夾
image.pngjava

image.png

 
 
 
 

2.修改tomcat的server.xml(這個也很重要)

1)用文本編輯器(如記事本),打開tomcat安裝目錄下conf文件夾下的server.xmlmysql

說明:若是不記得安裝路徑,能夠用everything軟件搜索tomcat-web

image.png

 
image.png

2)搜索connectionTimeout="20000",加上URIEncoding="UTF-8",保存文件。spring

image.png

 
 
 
 

3.數據庫鏈接時要寫上encoding=UTF8

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 ApplicationContextsegmentfault

Server Tomcat v9.0 Server at localhost failed to start.tomcat

後來往上翻才發現,它已經提示了我applicationContext.xml中鏈接數據庫的url,useUnicode須要以;爲分隔符(其實就是寫錯了,不該該寫,致使服務器沒法啓動

 
 
 
 
 
2)若是你是加載配置文件,則修改配置文件中url的編碼

具體參考此文:SSM解決中文存入數據庫亂碼問題(記錄本身的問題)
 
 
 
 

4.jsp視圖加上UTF8(在新建jsp文件時就要注意)

通常在新建jsp時注意改過來就行(通常是ISO-8859-1

文件頂部的pageEncoding設置

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

 
 
 
 

5.項目的web.xml寫上一些配置代碼(影響不是很大)

注意: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>

 
 
 
 

參考

解決springmvc接受前端傳來的中文出現中文亂碼狀況

SSM解決中文存入數據庫亂碼問題(記錄本身的問題)

IDEA向數據庫中插入中文數據亂碼問題永久解決方法

BeanFactory not initialized or already closed - call 'refresh' before access ... 的解決方法

相關文章
相關標籤/搜索