JSP中文乱码问题:
Tomcat的默认内部编码格式是ISO-8859-1。
页面配置:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=UTF-8"%>
Get方式提交(明文方式、超链接形式)的处理-->
在tomcat中需要设置:
打开<tomcat_home>\conf 目录下server.xml 文件,找到对8080端口进行服务的Connector组件的设置部分,添加一个属性:URIEncoding=”UTF-8”。
修改后:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
修改后重启tomcat使其起作用。
Post方式提交(密文方式)的处理-->
request.setCharacterEncoding(‘UTF-8’);
---------------------------
spring框架的字符编码过滤器CharacterEncodingFilter:
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</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>
这对于POST方式的请求有效,spring的CharacterEncodingFilter对于GET方式的HTTP请求,无能为力。
由于在默认情况下,浏览器发送的HTTP请求采用“ISO-8859-1”字符编码,故tomcat不用作编码设置,对于get方式也可以手动转码:
String value = new String(req.getParameter(name).trim().getBytes("ISO8859-1"),"gbk");