java web 乱码 问题

欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入

  SetEncodingFilter代码:

  package com.qa.util;

  import javax.servlet.*;

  import java.io.*;

  public class SetEncodingFilter implements Filter

  {

  protected String encoding=null;//定义缺省字符编码方式

  protected boolean ignore=true;//定义客户端指定的编码方式是否应被忽略

  protected FilterConfig filterConfig=null;//定义过滤器配置对象,若为null,则说明过滤器未配置

  public void destroy()//停止过滤器的工作

  {

  this.encoding=null;

  this.filterConfig=null;

  }

  //设置字符编码

  public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain)

  throws IOException,ServletException

  {

  if(ignore||(req.getCharacterEncoding()==null))

  {

  req.setCharacterEncoding(selectEncoding(req));

  }

  chain.doFilter(req,res);

  }

  //启动过滤器

  public void init(FilterConfig filterConfig)throws ServletException

  {

  this.filterConfig=filterConfig;

  this.encoding=filterConfig.getInitParameter(“encoding”);

  String value=filterConfig.getInitParameter(“ignore”);

  if(value==null) this.ignore=true;

  else if(value.equalsIgnoreCase(“true”)

  ||value.equalsIgnoreCase(“yes”)) this.ignore=true;

  else this.ignore=false;

  }

  //选择合适的字符编码方式

  protected String selectEncoding(ServletRequest req)

  {

  return this.encoding;

  }

  //返回filterConfig对象

  public FilterConfig getFilterConfig()

  {

  return filterConfig;

  }

  //设置filterConfig对象

  public void setFilterConfig(FilterConfig filterConfig)

  {

  this.filterConfig=filterConfig;

  }

  }

  5、服务器apache上的乱码。

  除了以上的情况外,还有apache的配置问题,注意的方面有以下几点:

  1)conf/httpd.conf

  把AddDefaultCharset ISO-8859-1 改成 AddDefaultCharset GBK

  2)apache进行了rewrite

  把需要rewrite的url中的中文参数进行两次编码(encode),因为apache在rewrite时会做一次url解码,这时jk进行请求转发时,就不会再是编码后的字符串了;

  或者在接收请求时先用ISO-8859-1取字节流,再使用UFT-8来new String。(new String(str.getBytes(“ISO-8859-1″),”UFT-8”))

[1][2]

而现在我喜欢深邃的夜空,包容一切的黑暗和隐忍,留下眼泪也没人看见。

java web 乱码 问题

相关文章:

你感兴趣的文章:

标签云: