终于解决了myeclipse困扰我许久的乱码问题!!

1、request.getparameter 中的乱码问题的解决方法

处理方法一:

不知道什么时候开始(好像是在一次重新安装了myeclipse后),我从在java代码中的request.getparameter获取中文参数值的结果变成了乱码,上网搜索了一番,暂时得到这么一个解决方法:

(1)、首先在jsp页面首部添加这么一段:

<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>  

(2)、那么下一步(jsp或者java)如果从上面这个jsp中获取某一参数时(如companyName),要这么处理:

QuestionaryManager qManager = new QuestionaryManager();
  String companyName = (String) request.getParameter("companyName");  
  String gCompanyName = "";
    try {
   gCompanyName = new String(companyName.getBytes("ISO-8859-1"), "GBK");//经过zhuanma
  } catch (Exception ex) {
   System.out.println(ex.getMessage());
  }

 companyName 是乱码,经过转码处理后,gCompanyName 就是正常字符了。

这样做很笨,很麻烦!增加的代码量可壮观了!并且维护起来麻烦!

处理方法二:

在web.xml里面加过滤器,一劳永逸!

(1)、先添加这么一个转码的类

import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public final class CharacterEncodingFilter
    implements Filter
{
    public CharacterEncodingFilter()
    {
     System.out.println("==CharacterEncodingFilter==");
        encoding = "gb2312";
        ignore = false;
    } 

  
    public void init(FilterConfig config)
    {
     System.out.println("==init==");
        if(config.getInitParameter("encoding") != null)
            encoding = config.getInitParameter("encoding");
        if(config.getInitParameter("ignore") != null)
            ignore = (new Boolean(config.getInitParameter("ignore"))).booleanValue();
    }
 
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
        throws IOException, ServletException
    {
     System.out.println("==doFilter==");
        HttpServletRequest req = (HttpServletRequest)request;
        HttpServletResponse res = (HttpServletResponse)response;
        if(!ignore)
        {
            req.setCharacterEncoding(encoding);
           // res.setCharacterEncoding(encoding);
        }
        chain.doFilter(request, response);
    }

    public void destroy()
    {
    }

    private String encoding;
    private boolean ignore;
}
(2)、在web.xml里面添加过滤器filter:

 <filter>
     <filter-name>Set Character Encoding</filter-name>
     <filter-class>CharacterEncodingFilter</filter-class>  //这是上面那个类的包路径和类名
     <init-param>
      <param-name>encoding</param-name>
      <param-value>GBK</param-value>
     </init-param>
 </filter>
 
 <filter-mapping>
     <filter-name>Set Character Encoding</filter-name>
     <url-pattern>*.do</url-pattern> //过滤所有.do文件
 </filter-mapping>
 
 <filter-mapping>
     <filter-name>Set Character Encoding</filter-name>
     <url-pattern>*.jsp</url-pattern>  //过滤所有.jsp文件
 </filter-mapping>

 这样,所有的request.getparameter都会经过这个过滤器处理,乱码问题就没有了,而且可以任意修改<param-value>GBK</param-value>,想怎么encodeing,就怎么encoding!

2、在myeclipse中查看jsp文件的时候,jsp中的中文无法正常显示,乱码!!

在myeclipse中右键点击jsp文件,选择properties,在text file encoding中选择Other,在下拉框中输入GBK,然后Apply——〉OK,搞定!

一直都没想过这个下拉列表可以输入东西,只想下拉列表中没有GBK,选不上这项,没想到可以自己输进去,汗,折腾了许久呢!!

阅读更多
个人分类: JAVA
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

终于解决了myeclipse困扰我许久的乱码问题!!

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭