(1)通用处理方案
接收客户端数据时,数据乱码处理措施如下:
- // (1)以GET方式发送的数据,接收时应做以下处理:
- String temp=new String(request.getParameter("ISO-8859-1"),"GBK");
- // (2)以POST方式发送的数据,接收时应做以下处理:
- request.getParameter("GBK");
将处理后的数据返回给客户端时,数据乱码处理措施如下:
- //将服务器端处理后的数据返回给客户端时,避免乱码应采用如下措施
- // 首先,应统一页面的编码格式
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=utf-8"%>
- //其次,应对从服务器端返回的数据进行处理:
- response.setContentType("text/html;charset=GBK");
(2)过滤器处理乱码问题
- import javax.servlet.*;
- import java.io.IOException;
- /**
- * 用于设置 HTTP 请求字符编码的过滤器,通过过滤器参数encoding指明使用何种字符编码,用于处理Html Form请求参数的中文问题
- */
- public class CharacterEncodingFilter
- implements Filter
- {
- protected FilterConfig filterConfig = null;
- protected String encoding = "";
- public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletExceptio{
- if(encoding != null)
- servletRequest.setCharacterEncoding(encoding);
- filterChain.doFilter(servletRequest, servletResponse);
- }
- public void destroy(){
- filterConfig = null;
- encoding =null;
- }
- public void init(FilterConfig filterConfig) throws ServletException {
- this.filterConfig = filterConfig;
- this.encoding = filterConfig.getInitParameter("encoding");
- }
- }
web.xml配置如下:
- <filter>
- <filter-name>CharacterEncodingFilter</filter-name>
- <filter-class>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>