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 ... 的解决方法