应用服务器tomcat编码引起的JSP中汉字传到后台乱码问题

原创 2015年07月10日 15:09:09

一般JSP中汉字传到后台显示乱码的解决方案大致分为:

1.web.xml设置字符编码过滤器,后台java代码:

package com.sls.pub.utils;
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 ServletFilter
  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
  {
    if ((this.ignore) || (request.getCharacterEncoding() == null)) {
      String encoding = selectEncoding(request);
      if (encoding != null) {
        request.setCharacterEncoding(encoding);
      }
    }

    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;
  }
}
web.xml编写过滤器(此处允许GBK编码):
<filter>
    <filter-name>EncodingFilter</filter-name>
    <display-name>EncodingFilter</display-name>
    <description>EncodingFilter</description>
    <filter-class>com.sls.pub.utils.ServletFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>GBK</param-value>
    </init-param>
  </filter>
2.设置IDE软件(eg:myeclipse)的编码,这个方法大家可以百度一下,此处略去。
3.第三个也是大家容易忽略的问题,这里细讲一下。
我遇到的问题是,我的整个工程编码格式是GBK,JSP中在URL拼接路径访问时传递的汉字仍正常,传到后台后通过reqest.getParameter("")获取该字段后变成了乱码。我本地使用的myeclipse+tomcat。但是工程在linux环境部署的websphere应用服务器中没有乱码问题。我检查过myeclipse编码设置,然后定位到可能是应用服务器不同导致的。然后我去查tomcat的相关资料,最后发现tomcat的默认编码是iso8859-1。如果要改变其默认的编码,需要在tomcat的server.xml中,修改这段代码:
 <Connector port="8888" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
修改为:
 <Connector port="8888" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"  URIEncoding="GBK" />
问题解决...

从JSP前台页面传中文参数,到后台接受出现乱码,如何解决?

传到控制台是这样子的 username = ?????§??? 解决: 前台传输的时候用JS进行转化下 encodeURI(encodeURI("index...

jsp页面向后台传值出现乱码的问题

今天做普通的前台页面向后台传值,要传值的内容是中文,传到后台打印一看 居然内容变成了 “?????” 于是在网上找了一些方法  : 1、采用decode()方法  页面: Url: '...

jsp 页面传值 到后台 中文乱码解决方法

例jsp中传入的参数名字:shortname 情况(1):和方法2针对的情况一样 如果是第3种情况的话就不适用了                      java后台代码这样处理   String ...
  • zygzzp
  • zygzzp
  • 2014年04月02日 14:58
  • 3155

jsp传输数据到后台乱码解决方案

今天遇到的问题,花了不少时间,总结一下,JSP用FORM表单传值到后台乱码,页面顶部配置web.xml文件里写一下编码过滤器               encodingFilter     ...
  • sytylyl
  • sytylyl
  • 2014年06月26日 10:07
  • 2136

解决javaWEB中前台传数据到后台中文乱码问题的3种方法

中文乱码问题真的是一个很棘手的问题,特别是从前台传到后台之后,都不知道问题出在哪里了。现在分享解决javaWEB中前后台中文乱码问题的3种方法。 方法一: tomcat的自带编码是ISO-8859-1...

jsp或java中前后台传值乱码解决

如果服务器是tomcat前台传后台:url?par=测试,   则par到后台取到的值为乱码一般的处理方法:String str= reqDTO.getValue("par");str= new St...
  • zlreal
  • zlreal
  • 2007年10月23日 19:42
  • 5640

jsp页面传入后台Action乱码问题解决方案

我们经常在jsp页面通过url传入中文参数,在action中去接收会发现中文乱码了,这时候我的解决办法是进行判断   如:                                      ...

SpringMVC上传文件的三种方式

恰好学习到这一块,转载这篇文章, 权当记录; 转载文章出处:http://www.cnblogs.com/fjsnail/p/3491033.html commonsmulti...

post请求下载excel文档解决方法

post请求无法直接发送请求下载excel文档,是因为我们在后台改变了响应头的内容: Content-Type: application/vnd.ms-excel 导致post请求无法识别这种消息...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:应用服务器tomcat编码引起的JSP中汉字传到后台乱码问题
举报原因:
原因补充:

(最多只允许输入30个字)