`
韶音韶乐
  • 浏览: 86403 次
  • 性别: 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才能起作用。

分享到:
评论

相关推荐

    jsp页面提交乱码问题

    ### jsp页面提交乱码问题解析 #### 一、乱码问题概述 在进行Web开发时,特别是使用Java Server Pages (JSP)技术时,经常会遇到表单提交数据出现乱码的问题。这个问题主要出现在从客户端(如浏览器)提交的数据到...

    如何解决JSP页面显示乱码问题

    本文将针对JSP页面显示乱码、表单提交中文时出现乱码以及数据库连接时出现乱码这三个方面,提供详细的解决方案。 #### JSP页面显示乱码 **问题描述** 当在JSP页面中尝试显示中文时,可能会遇到乱码问题。例如,在...

    jsp页面传值中文乱码问题处理.docx

    jsp页面传值中文乱码问题处理 在 JSP 页面中传值时,中文字符可能会出现乱码问题,这是由于字符编码不一致所引起的。下面将详细讲解 JSP 中文乱码种类和解决方案。 JSP 文件中文内容显示乱码 在 JSP 文件中,如果...

    JSP中文乱码问题解决办法

    JSP 中文乱码问题解决办法 JSP 页面中中文乱码问题是指在 JSP 页面中使用中文时,页面显示...解决 JSP 中文乱码问题需要从多方面入手,包括设置页面的字符编码、使用 POST 方式提交表单、使用 GET 方式提交表单等。

    解决jsp页面中文乱码问题

    在开发Web应用时,我们经常会遇到JSP页面中文乱码的问题。这主要涉及到字符编码的设置和处理。本文将深入探讨如何解决这个问题,确保在JSP页面中正确显示中文字符。 首先,我们需要理解字符编码的基本概念。在...

    jsp中文乱码问题jsp中文乱码问题详解

    jsp中文乱码问题详解 在jsp中文乱码问题中,乱码的出现是由于编码格式不一致所导致的。在jsp文件中,存在三个地方的编码格式:jsp文件的存储格式、解码格式和控制浏览器的解码方式。如果这三个地方的编码格式不一致...

    JSP页面中文乱码几个解决办法

    当通过POST方式提交表单数据到JSP或Servlet时,如果接收的中文参数值乱码,可以在处理请求的代码之前,使用`request.setCharacterEncoding("GBK")`来设置请求参数的编码格式。这通常应在读取参数之前进行,以确保...

    5种JSP页面显示为乱码的解决方法

    在JSP编程中,开发者经常会遇到页面显示乱码的问题,这不仅影响了用户界面的美观,也可能会导致数据处理的错误。本篇文章将详细介绍五种常见的JSP页面乱码问题及其解决方案。 1. JSP页面显示乱码 这通常是由于字符...

    jsp乱码解决方案 本方案解决了jsp常见的乱码问题

    ### jsp乱码解决方案 #### 一、引言 在Web开发中,特别是使用Java Server Pages (JSP)进行开发时,字符编码问题是一个经常遇到的技术难题。如果处理不当,很容易导致网页显示乱码,影响用户体验及数据的正确性。...

    解决jsp提交乱码的问题

    本篇文章将详细介绍如何解决JSP页面提交时出现的乱码问题,包括GET请求和POST请求两种常见的情况。 #### 一、问题背景与分析 1. **GET请求乱码**: - GET请求是通过URL来传递参数的,这些参数通常会以编码的形式...

    jsp eclipse乱码问题

    1. **页面显示乱码**:当用户通过浏览器访问JSP页面时,某些字符或字符串不能正确显示。 2. **参数传递乱码**:在表单提交或URL传参过程中,中文等非ASCII字符无法正确识别或解析。 #### 二、乱码产生的原因 1. **...

    web项目乱码问题 jsp乱码问题解决

    解决JSP页面显示中文乱码的问题,关键在于确保所有环节使用相同的字符编码。可以按照以下步骤操作: 1. 使用统一的文件编码:确保JSP文件以UTF-8或其他支持中文的编码格式存储,并且IDE(如Eclipse)配置为使用该...

    Jsp乱码问题解决

    ### JSP乱码问题解决 #### 一、JSP页面显示乱码 在JSP页面开发过程中,中文乱码是一个常见的问题。这个问题主要是由于服务器端和客户端(浏览器)的编码设置不一致导致的。 **原因分析:** 1. **服务器编码设置...

    jsp中在提交表单时的中文处理问题

    在JSP(Java Server Pages)中处理中文字符时,特别是在用户通过表单提交数据时,可能会遇到各种编码问题。这是因为Web应用中涉及到多种编码格式,包括浏览器编码、HTTP请求编码、服务器编码等,如果这些编码不一致...

    JSP中文乱码常见3个例子及其解决方法.docx

    在JSP开发中,中文乱码是一个常见的问题,主要源于Web容器默认采用ISO-8859-1字符集,无法正确处理中文字符。本文将详细介绍三个常见的JSP中文乱码例子及其解决方法。 实例一:JSP页面显示时的乱码 在JSP页面直接...

    Servlet及jsp解决中文乱码问题

    通过上述方法,我们可以有效地解决Servlet与JSP中常见的中文乱码问题。需要注意的是,在实际应用中还需要根据具体情况进行调整和优化。例如,确保前后端编码一致、合理选择表单提交方式等。此外,还可以考虑使用统一...

    页面乱码解决4种方案

    这四个场景分别是:JSP页面显示乱码、表单提交中文时出现乱码、数据库连接出现乱码以及数据库显示乱码的问题。这些解决方案不仅适用于Java + MySQL的开发环境,也适用于其他编程语言及数据库环境。 ### 一、JSP页面...

    jsp页面乱码处理

    在进行Web开发时,尤其是使用JSP技术栈时,乱码问题是一个常见的困扰,它可能出现在页面显示、表单提交或数据库交互等多个环节。本文将根据“jsp页面乱码处理”的标题与描述,深入解析解决JSP乱码问题的策略,并结合...

Global site tag (gtag.js) - Google Analytics