IDE环境是eclipse3.2.2+myeclipse5.5.1+tomcat5.5.2
创建一个myeclipse中的webproject,新建一个jsp页面。然后输入中文字符,启动tomcat服务器。ie显示老是乱码
研究了网上无数解决方案仍然无法解决。下面是我的具体做法,不知道哪里出问题了。请高手赐教。。不胜感激
jsp代码:<%@ page contentType="text/html;charset=utf-8" language="java" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
   <META http-equiv="Content-Type" content="text/html;charset=utf-8">
  <TITLE> New Document </TITLE>  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
 </HEAD> <BODY>
  中文测试
 </BODY>
</HTML>运行tomcat依然乱码。
运用网上的方法在web.xml中加入如下代码<filter>
  <filter-name>Set Character Encoding</filter-name>   
  <filter-class>filters.SetCharacterEncodingFilter</filter-class>   
  <init-param>   
  <param-name>encoding</param-name>   
  <param-value>utf-8</param-value>   
  </init-param>   
  </filter>   
  <filter-mapping>   
  <filter-name>Set Character Encoding</filter-name>   
  <url-pattern>/*</url-pattern>   
  </filter-mapping>  然后运行tomcat还是乱码
更改web.xml中utf-8为gbk,更改jsp代码中charset=gbk,pageEncoding="gbk",meta中charset=gbk
再运行tomcat虽然还是乱码,当时查看源文件是不会乱码的。
在IE中编码->更改为utf-8就不会乱码,重新刷新还是乱码。
研究一整天了都没办法解决,求救中有改成功的朋友告诉我下谢谢了。。

解决方案 »

  1.   

    用google的浏览器问题也还是一样的。很晕啊。也需要在网页上手动更改编码才可以。
      

  2.   

    使用jsp的内置对象request函数
    如:<%requset.setCharacterEncoding("GBK")%;>
      

  3.   

    tomcat内部编码也要设置的,你在里面改下。一般网页中文字的乱码问题,一般三个,楼主2个+前面写的。 从数据库弄出来的,涉及四个,再加上数据库编码,(可能还要加上访问数据库的编码设置)
      

  4.   

    response.setCharacterEncoding("gb2312");
      

  5.   

    gb2312是简体中文
    其他编码方式,网页->鼠标右击->编码->其他
      

  6.   

    检查下你的html文件的编码方式是不是utf-8
      

  7.   

    通常乱码解决方法,新建一个过滤器例如:
    package com.accp.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;public class MyFilter implements Filter{ public void destroy() {

    } public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain filterChain) throws IOException, ServletException {
    response.setContentType("text/html;charset=UTF-8");
    request.setCharacterEncoding("UTF-8");
    filterChain.doFilter(request, response);
    } public void init(FilterConfig arg0) throws ServletException {
    // TODO Auto-generated method stub

    }}然后在web.xml中进行配置:
      <filter>
       <filter-name>myFilter</filter-name>
       <filter-class>com.accp.filter.MyFilter</filter-class>    //找到过滤器所在位置
      </filter>
      <filter-mapping>
       <filter-name>myFilter</filter-name>
       <url-pattern>/*</url-pattern>                            //过滤所有网页
      </filter-mapping>
      

  8.   

    过滤器用的是tomcat里面那个
    package filters;
    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;
    import javax.servlet.UnavailableException;
    public class SetCharacterEncodingFilter implements Filter {
        protected String encoding = null;    protected FilterConfig filterConfig = null;
        protected boolean ignore = true;    public void destroy() {        this.encoding = null;
            this.filterConfig = null;    }    public void doFilter(ServletRequest request, ServletResponse response,
                             FilterChain chain)
    throws IOException, ServletException {        // Conditionally select and set the character encoding to be used
            if (ignore || (request.getCharacterEncoding() == null)) {
                String encoding = selectEncoding(request);
                if (encoding != null)
                    request.setCharacterEncoding(encoding);
            } // Pass control on to the next filter
            chain.doFilter(request, response);    }    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"))
                this.ignore = true;
            else if (value.equalsIgnoreCase("yes"))
                this.ignore = true;
            else
                this.ignore = false;    }    protected String selectEncoding(ServletRequest request) {        return (this.encoding);    }
    }
      

  9.   

    为什么你的过滤器filters/MyFilter(wrong name: MyFilter)??
      

  10.   

    问题解决了。散分。哈哈。。太开心了,搞了两天了。我原来的环境是winxp+eclipse3.2+myeclipse5.5.1+tomcat5.5.27.
    尝试了无数方法,都没有解决问题。
    刚刚我换了一个tomcat5.5.20版本。没做什么修改,使用的是UTF-8编码。
    一调试就成功了。中文不在乱码,烦恼不在了。呵呵。谢谢各位了。。