1、post方式提交中文乱码处理
1、jsp页面编码设为"UTF-8"
<%@ page language="java" import="java.util.*" pageEncodint="UTF-8"%>
2、form表单提交方式必须为post,get方式提交spring编码过滤器不起效
<form action="./quryPro.do" name="proForm" method="post">
3、修改web.xml,增加编码过滤器
- <filter>
- <filter-name>encodingFilter</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>encodingFilter</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
两个参数的作用
1>、encoding
用来指定一个具体的字符集
2>、forceEncoding
Spring里的字符过滤器CharacterEncodingFilter是针对请求的,forceEncoding=true意思是指无论客户端请求是否包含了编码,都用过滤器里面的编码来解析请求
2、get方式提交中文乱码处理
上面的过滤器,过滤了所有请求。但还是有问题,最后发现是表单的问题,在表单中method默认是get,而以上过滤器只对post有效果,如果是get,需要修改 Tomcat根式目录的 conf/server.xml文件中,找<Connector port="8080" />,在里面加<Connector port="8080" uRIEncoding="utf-8" />
3、连接数据库时的中文设置
url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8";