环境tomcat5.5在jsp中有个表单 我采用的提交方式是post
页面编码如下:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
提交后我在servlet端设置请求的编码为request.setCharacterEncoding("UTF-8");
直接按下面的方式取参数
request.getParameter("title")得到的是乱码虽然已经设置了请求编码还是需要通过下面的方式来获取参数
new String(request.getParameter("title").getBytes("ISO-8859-1"),"UTF-8")这种方法虽然能取到正确的中文参数,但是这个我看了一下是tomcat对http服务的解析过程中加进去的ISO-8859-1,所以对其他的网络服务支持应该不好,我怎样根据环境才能正确的取到中文编码的值呢?

解决方案 »

  1.   

    你用的是 Servlet ,就再写 过滤器  Filter ,所有的 乱码都是浮云啊
      

  2.   

    打开tomcat安装目录下的conf文件夹,找到server.xml文件,将里面的<Connector>加上URIEncoding="utf-8" !
      

  3.   

    Ps:
    servlet防止乱码:
    1、Tomcat conf下server.xml文件,<Connector>加上URIEncoding="utf-8" 
    2、页面加上charset=utf-8
    3、servlet的doPost方法加上request.setCharacterEncoding("UTF-8")。
      

  4.   

    过滤器代码:package com.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 FilterEncoding implements Filter {

    private FilterConfig filterConfig = null; public FilterEncoding() {
    } public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
    if (request.getCharacterEncoding() == null
    || !(request.getCharacterEncoding().equals("UTF-8"))) {
    try {
    request.setCharacterEncoding("UTF-8");
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    try {
    chain.doFilter(request, response);
    } catch (ServletException sx) {
    filterConfig.getServletContext().log(sx.getMessage());
    } catch (IOException iox) {
    filterConfig.getServletContext().log(iox.getMessage());
    }
    } public void destroy() {
    } public void init(FilterConfig filterConfig) { this.filterConfig = filterConfig; }
    }
    web.xml配置
            <filter>
           <filter-name>filterEncoding</filter-name>
           <filter-class>com.filter.FilterEncoding</filter-class>
       </filter>
        <filter-mapping>
        <filter-name>filterEncoding</filter-name>
         <url-pattern>/*</url-pattern>
       </filter-mapping>
      

  5.   

    额,各位回复的真快,感谢大家的回帖!问题是我现在的项目已经在使用了, 涉及到server.xml设置的问题不方便修改,过滤器我在考虑过程中。先试试了,期待更好的解决办法!
      

  6.   

    帖子虽然结了,不过我发现我的问题了。   所有的编码设置必须都要在getParameter方法之前,取出任何一个参数后设置的编码就已经是默认的了!