`
韶音韶乐
  • 浏览: 84924 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

常见的乱码问题分为JSP页面显示中文乱码、表单提交乱码两类

阅读更多

现在将常见的乱码问题分为JSP页面显示中文乱码、表单提交乱码两类。 
     1)JSP页面中显示中文乱码 
     在JSP文件中使用page命令指定响应结果的MIME类型,如<%@ page language="java" contentType="text/html;charset=gb2312" %> 
     2)表单提交乱码     
     表单提交时(post和Get方法),使用request.getParameter方法得到乱码,这是因为tomcat处理提交的参数时默认的是iso-8859-1,表单提交get和post处理乱码问题不同,下面分别说明。 
    (1)POST处理 
    对post提交的表单通过编写一个过滤器的方法来解决,过滤器在用户提交的数据被处理之前被调用,可以在这里改变参数的编码方式,过滤器的代码如下: 


package example.util; 
     
    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 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 { 

          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);     
     }     
    } 
文中红色的代码即为处理乱码的代码。 
      web.xml文件加入过滤器 
Xml代码 常见的乱码问题分为JSP页面显示中文乱码、表单提交乱码两类 - Fantasie - 随波逐流 
<filter> 
    <filter-name>Encoding</filter-name> 
    <filter-class> 
            example.util.SetCharacterEncodingFilter 
     </filter-class> 
    <init-param> 
   <param-name>encoding</param-name> 
   <param-value>gbk</param-value> 
   <!--gbk或者gb2312或者utf-8--> 
  </init-param> 
  <init-param> 
   <param-name>ignore</param-name> 
   <param-value>true</param-value> 
  </init-param> 
</filter> 

<filter-mapping> 
  <filter-name>Encoding</filter-name> 
  <servlet-name>/*</servlet-name> 
</filter-mapping> 

(2) Get方法的处理 
tomcat对post和get的处理方法不一样,所以过滤器不能解决get的乱码问题,它需要在其他地方设置。 
打开<tomcat_home>\conf目录下server.xml文件,找到对8080端口进行服务的Connector组件的设置部分,给这个组件添加一个属性:URIEncoding="GBK"。修改后的Connector设置为: 


<Connector port="8080" maxHttpHeaderSize="8192" 
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75" 
               enableLookups="false" redirectPort="8443" acceptCount="100" 
               connectionTimeout="20000" disableUploadTimeout="true" 
               URIEncoding="GBK" /> 

* 注意修改后重新启动tomcat才能起作用。

分享到:
评论

相关推荐

    如何解决Tomcat下中文乱码问题?

    现在将常见的乱码问题分为JSP页面显示中文乱码、表单提交乱码两类。 1)JSP页面中显示中文乱码 在JSP文件中使用page命令指定响应结果的MIME类型,如;charset=gb2312" %&gt;

    JSP中文乱码处理JSP中文乱码处理

    jsp中文乱码的处理 页面显示 表单提交 数据库操作JSP中文乱码处理

    Jsp乱码问题解决

    大家在JSP的开发过程中,经常出现中文乱码的问题,可能一至困扰着您,我现在把我在JSP开发中遇到的中文乱码的问题及解决办法写出来供大家参考。 一、JSP页面显示乱码 二、表单提交中文时出现乱码 三、数据库连接时...

    传值 乱码 处理 jsp 处理表单时

    传值 乱码 处理传值 乱码 处理传值 乱码 处理传值 乱码 处理传值 乱码 处理传值 乱码 处理传值 乱码 处理传值 乱码 处理

    JSP中文乱码问题综述,中文乱码解决大全

    中文乱码解决大全,表单使用Post方式提交后接收到的乱码问题,表单get提交方式的乱码处理方式,上传文件时的乱码解决,Java代码关于url请求,接受参数的乱码,关于jsp在MyEclipse中打开的乱码问题,关于html页面在eclipse...

    Servlet及jsp解决中文乱码问题

    彻底解决Servlet及jsp解决中文乱码问题

    java+jsp+mysql开发 web项目处理中文乱码问题

    Jsp输出中文的乱码问题,获取表单提交的数据时的中文乱码问题,url中的中文问题,数据库中采取的编码方式不同于utf-8怎么办

    JSP乱码解决大全

    JSP乱码解决大全 JSP页面显示乱码 表单提交中文时出现乱码 数据库连接

    JSP出现中文乱码问题解决方法详解

    在介绍方法之前我们首先应该清楚具体的问题有哪些,笔者在本博客当中论述的JSP中文乱码问题有如下几个方面:页面乱码、参数乱码、表单乱码、源文件乱码。下面来逐一解决其中的乱码问题。 一、JSP页面中文乱码 在JSP...

    Jsp乱码问题解决2

    1 最基本的乱码问题。 这个乱码问题是最简单的乱码问题。...2 表单使用Post方式提交后接收到的乱码问题 3 表单get提交方式的乱码处理方式。 4 上传文件时的乱码解决 5 Java代码关于url请求,接受参数的乱码 ......

    中文乱码问题

    JSP文件的中文乱码问题 Servlet的中文乱码问题 表单处理的中文乱码问题 Struts 2的中文乱码问题

    jsp常用经典代码(md5java实现,生成中文/数字验证码,解决中文乱码)

    jsp常用经典代码(md5java实现,生成中文/数字验证码,解决中文乱码) 自己平时收集的好资料和大家一起分享!!

    Java Web应用开发中的中文乱码问题研究.pdf

    在java Web应用开发中,软件开发人员最容易遇到的问题就是中文的乱码问题,其中最常见的有两种,JSP页面中文显示乱码和表单提交参数中文乱码。本文通过深入分析这两种中文乱码问题产生的原因,分别给出了对应的解决方案...

    jspsmartupload支持中文,不乱码

    修改过的jspsmartupload ,可以获取表单中的中文数据,不乱码,可以上传名字含有中文的文件。

    jsp传值中文乱码问题解决方法示例介绍

    在jsp中,我们经常从数据库读取数据返回客户端,但我们常常在制作时出现乱码现象,所以我们可以用&lt;&#37;request.setCharacterEncoding(“UTF-8”);%&gt;这个方法来保证中文的正确输出,下面举个例子吧, 我们要接住...

    jsp中文乱码 jsp mysql 乱码的解决方法

    当使用JSP页面将中文数据添加到MySql数据库中的时候发现变为乱码,或者从mysql中读取中文的时候出现乱码,这些问题根源都是由于字符编码不一致造成的。要知道病源是什么我们才能对症下药,所以我将问题产生的过程...

    彻底解决fckeditor(jsp版)上传中文图片乱码问题

    彻底解决fckeditor(jsp版)上传中文图片乱码问题,我这里用的编码是utf-8的,这里用的fckeditor 是2.6的,fckeditor.java包是2.3的,经过我修改ConnectorServlet.java和SimpleUploaderServlet.java两个文件,重新生成...

    jsp课后习题第4章.docx

    4-2 当表单提交信息中包括汉字时,在获取时应该做怎样的处理? 使用request.setCharacterEncoding(“gb2312”) 4-3 如何实现禁用缓存功能? 通过设置HTTP头可实现禁用缓存功能,具体代码如下: ("Cache-Control",...

    请求转发jsp页面乱码问题的快速解决方法

    •今天的问题:请求转发后页面的乱码问题 •由于特殊原因——图片上传的form表单无法通过ajax提交 因此必须使用form表单直接提交。但是这样会导致一个问题:前后台交互的时候效果不好。为什么效果不好?这里说的不是...

    jsp面试题及答案

    这个文档记录了有关jsp的一些知识,比如: jsp乱码如何解决,几种解决方案。? 一、JSP页面显示乱码二、表单提交中文时出现乱码三、数据库连接时出现乱码

Global site tag (gtag.js) - Google Analytics