`

项目中常用处理乱码的手段

阅读更多

 

1、jsp页面指定字符集

   这个主要是处理页面显示的乱码问题

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Insert title here</title>
</head>
<body>

</body>
</html>

 

 

2、修改tomcat配置文件,tomcat根目录/conf/server.xml

 

  修改Connector,添加URIEncoding="UTF-8" 属性,这个主要是处理get请求返回的数据。

 

  

 <Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

 

 

3、web应用中添加filter过滤器

 

    编写过滤器

 

     EncodingFilter.java

 

 

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class EncodingFilter implements Filter {
	protected String encoding = null;

	protected FilterConfig filterConfig = null;

	public void destroy() {
		this.encoding = null;
		this.filterConfig = null;
	}

	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		String encoding = selectEncoding(request);
		if (encoding != null) {
			request.setCharacterEncoding(encoding);
			response.setCharacterEncoding(encoding);
		}

		chain.doFilter(request, response);
	}

	public void init(FilterConfig filterConfig) throws ServletException {
		this.filterConfig = filterConfig;
		this.encoding = filterConfig.getInitParameter("encoding");
	}

	protected String selectEncoding(ServletRequest request) {
		return this.encoding;
	}
}

 

    web.xml中配置过滤器

 

    

<filter>
    <filter-name>SetChartEncoding</filter-name>
    <filter-class>com.hotels.common.EncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>SetChartEncoding</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

 

4、response中返回header设置content-type=“utf-8”

 

    

// 在一个servlet 中 或者在spring的一个controller中
protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String path = request.getContextPath();/// hotels
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");

}

 

 

5、如果是spring项目,可以添加spring的字符集过滤器

 

   web.xml

   

<!-- 字符集 -->
	<filter>
		<filter-name>characterEncoding</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>characterEncoding</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 

 

    

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics