Servlet 中文编码问题集成解决方案

本文详细介绍了在Web开发中遇到乱码问题时的三种解决方案:局部设置字符编码、全局设置字符编码和使用Spring提供的过虑器。通过实践这三种方法,开发者可以有效地避免因不同服务器默认编码导致的内容传输错误。

1. 原理介绍

 request会根据不同服务器默认的编码并将内容过滤传给后台程序所有就会有不同的编码问题

 

2. 解决方案

方案一、

所以在web中如果有乱码我们可以才用

对每一个doGet(HttpServletRequest request,HttpServletResponse response)

或doPost、Service等

 

req.setCharacterEncoding("UTF-8");

 

方案二、

我们可以用全局的方法

 

package com.xxx.filter;

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;

/**
 * 
 * @author liuqing
 * @version 1.0
 * @see 中文编码
 * 2009-10-27
 *
 */
public class CharacterEncodingFilter implements Filter {

	private String encoding;
	@Override
	public void destroy() {
	}

	@Override
	public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain filterChain) throws IOException, ServletException {
		req.setCharacterEncoding(this.encoding);
		filterChain.doFilter(req, resp);
	}

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

}

 

在web.xml 中添加过虑器

<filter>
		<filter-name>CharacterEncodingFilter</filter-name>
		<filter-class>com.xxx.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 

方案三、

如果闲写麻烦就用Spring 写好的过虑器也可以

 

<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>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值