`

WEB开发中,中文传参问题的解决办法

阅读更多

  因为我在jsp页面上对字符的编码方式都习惯用UTF-8, 所以本文用UTF-8格式做例子,其它编码方式(如常用的GBK,GB2312),只需要把UTF-8替换为相应编码方式。
(web.xml 和 server.xml 不用特意去改, 原本是怎样就直接用即可).

前台页面参数传递到后台程序的方式主要可分POST 和 GET,现在就从这两种方式讲:

一:POST方式:
用Filter解决: Tomcat 已经做了个例子, 直接拿来用。
在tomcat安装目录下的webapps\jsp-examples\WEB-INF\classes\filters\目录下有个SetCharacterEncodingFilter.java文件,把它复制到自己项目的\WEB-INF\classes\filters\里
它的源码类似以下:
//=========================================================
/*
 * 类名: SetCharacterEncodingFilter.java
 * 作者: qiujy
 * 版本: V1.0
 * 创建日期:2005-12-2
 *
 * Copyright 2006 qiujy All rights reserved.
 */
package com.xumh.common.util;
import javax.servlet.Filter;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import java.io.IOException;
/**
 * the filter for code
 */
public class SetCharacterEncodingFilter implements Filter {

 protected FilterConfig config = null;
 protected String encoding = null;
 protected boolean ignore = true;
 public SetCharacterEncodingFilter() {
  super();
 }
 public void destroy() {
  this.encoding = null;
  this.config = null;
 }
 public void doFilter(
  ServletRequest request,
  ServletResponse response,
  FilterChain chain)
  throws ServletException, IOException {
  if (this.ignore || request.getCharacterEncoding() == null) {
   request.setCharacterEncoding(this.encoding);
  }
  chain.doFilter(request, response);
 }
 public void init(FilterConfig config) {
  this.config = config;
  this.encoding = this.config.getInitParameter("encoding");
  String value = this.config.getInitParameter("ignore");
  if (value == null) {
   this.ignore = true;
  } else if (value.equalsIgnoreCase("true")) {
   this.ignore = true;
  } else {
   this.ignore = false;
  }
 }
}

//=========================================================

然后修改\WEB-INF\web.xml, 新增以下的

     <filter>
        <filter-name>SetCharacterEncoding</filter-name>
        <filter-class>filters.SetCharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
      <filter-name>SetCharacterEncoding</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>

 
提示: 如果多个项目都想用这个方法, 可以把filters\SetCharacterEncodingFilter.class 复制到{tomcat}\shared\classes里, 再修改{有需要用的项目}\WEB-INF\web.xml, 新增以上的几行即可。

二、GET方式:
修改tomcat安装目录下的conf\server.xml文件,找到 <Connector port=80 或 <Connector port="8080" 这行
在这个标签的中新增一句URIEncoding="UTF-8", 即<Connector port=8080 URIEncoding="UTF-8" ...略...>
其它照原来的,不用动。

这样, 用<form method="get">的话,直接接收就已经是中文了.

最后注意:如果编码为UTF-8且用link方式时,如
<a href="/mytest/test.jsp?str='中文'">test</a>
则接收到的str是正常的"中文"二字,若为
<a href="/mytest/test.jsp?str='中文字'">test</a>
则接收到的str是的"中文?",第三个字乱码。也就是说偶数个中文字是正常的,奇数个中文字最后一个会乱码,我也不知道为什么。(但是编码采用的是GBK或GB2312:则正常)

解决编码为UTF-8且用link方式时,就要先把中文部分先编码, 如
 <%String str = "中文";
    str = java.net.URLEncoder.encode(str,"UTF-8");
%>
<a href="/mytest/test.jsp?str=<%=str%>">test</a>
(注:若用javascrpit也可进行utf-8编码:encodeURIComponent("中文"))

接收到的中文字不管奇数个还是偶数个都正常了。。

这样, 基本上就解決了post和get的乱码问题。

另外. 在修改web.xml 和 server.xml后一定要记得重启Tomcat  

分享到:
评论

相关推荐

    get方式传参中文乱码问题的解决方案

    在Web开发中,经常遇到GET请求传递中文参数时出现乱码的问题。这种现象通常出现在不同编码格式之间的转换过程中,导致浏览器或者服务器端解析参数时出现问题。本文将深入探讨GET方式传参中文乱码的原因,并提供多种...

    JSP页面传参出现中文乱码的解决方案

    在开发Java Web应用程序时,尤其是使用JSP技术时,经常遇到的一个问题是中文字符在传递过程中出现乱码。这个问题主要是由于字符编码不一致导致的。在本文中,我们将深入探讨JSP页面传参出现中文乱码的原因,并提供...

    get中文传参(解码)

    在IT行业中,尤其是在Web开发领域,GET请求是HTTP协议中的一种常见方法,用于从服务器获取数据。当涉及到中文参数的传递时,由于编码问题,可能会出现乱码的情况。本篇文章将详细探讨“GET中文传参(解码)”这一...

    解决vs2012 “无法启动已配置的visual studio开发web服务器”的解决办法

    解决VS2012中“无法启动已配置的Visual Studio开发Web服务器”的解决办法 在Visual Studio 2012中,开发者可能会遇到“无法启动已配置的Visual Studio开发Web服务器”的错误,这是一个常见的问题。这个错误可能是...

    Java Web开发中文乱码问题的研究与解决.pdf

    总之,Java Web开发中的中文乱码问题需要从多个层面进行检查和调整,确保数据在整个处理链路中的编码一致性,才能有效地避免和解决乱码问题。这需要开发者具备扎实的字符编码知识,并在实践中积累经验,以便在遇到...

    js传参乱码解决(亲测可行)

    在Web开发中,经常遇到的一个问题是客户端向服务器端传递参数时出现乱码的情况。这个问题主要是由于字符编码不一致所导致的。为了帮助开发者更好地理解如何解决js传参乱码的问题,本文将详细介绍解决方案,并提供...

    力控web发布常见问题解决办法

    力控web发布常见问题解决办法 Force Control Web 发布是当前许多企业和个人使用的一种常见的发布形式,但是在实际使用过程中,很多人都会遇到一些常见的问题,影响着发布的效率和质量。为了解决这些问题,本文将对...

    python web开发.pdf

    实验分为多个阶段,包括环境配置、Web应用开发、问题驱动开发、项目管理与审核、模块分割设计和单元测试等,每个阶段都有具体的操作要求和评估标准,旨在通过实践强化理论知识,提高学生的动手能力和问题解决能力。...

    web前端开发基本问题解决

    web标准中定义id与class有什么区别吗 如何垂直居中文本 如何对齐文本与文本输入筐 为什么FF下面不能水平居中呢 为什么FF下文本无法撑开容器的高度 为什么IE6下容器的宽度和FF解释不同呢 为什么web标准中IE无法设置...

    Java Web开发中的中文乱码问题分析及解决方案.pdf

    Java Web开发中的中文乱码问题是一个常见的困扰,尤其是在处理用户输入和数据显示时。问题的核心在于不同组件和环境之间编码方式的不一致。本文将深入探讨Java Web的编码机制,JSP运行原理,以及如何解决常见的乱码...

    PowerBuilder 9.0 Web开发篇

    《PowerBuilder 9.0 Web开发篇》是“PowerBuilder 9.0应用开发丛书”中的一部分,由张涛编著。本系列丛书旨在全面介绍PowerBuilder 9.0在商业应用开发中的使用方法,特别是Web开发方面的技术。PowerBuilder自1991年...

    C++Http上传文件到web服务器,解决中文参数乱码

    在C++中,进行HTTP文件上传到Web服务器时,可能会遇到中文参数乱码的问题。这是因为HTTP协议本身并不处理字符编码,而是依赖于上层的应用层协议(如HTTP头或者POST数据)来处理字符集。当涉及到非ASCII字符,如中文...

    js直接调用exe传参

    在Web开发过程中,有时候我们需要从HTML页面通过JavaScript(简称JS)来调用本地的应用程序,并传递参数给这些应用程序。这种需求通常出现在需要与本地资源进行交互或者执行特定任务的情况下。 #### 关键技术与方法...

    海康威视摄像头二次开发用到的web开发包

    海康威视作为全球领先的安防产品及解决方案提供商,其摄像头产品广泛应用于监控领域,并且提供了丰富的二次开发接口供开发者使用。本开发包是专为基于Web的二次开发设计的,旨在帮助开发者创建与海康威视摄像头交互...

    关于Java+Web技术开发中中文乱码问题的深入探讨.pdf

    中文乱码问题是 Java Web 技术开发中一个常见的问题,但通过配置 Tomcat 的编码方式、在 Java 代码中指定编码方式、使用 Unicode 字符等方法,可以解决这个问题。同时,统一编码方式、使用字符编码检测工具、学习 ...

    PythonWeb开发基础教程教案PDF版进店另有word版或PPT版.pdf

    每个章节都设有实验环节,比如创建"HelloWorld"项目、在IIS中部署项目以及实践URL分发等,这些实验旨在让学生通过动手实践巩固理论知识,提升解决问题的能力。 【教材与参考资料】 课程主要参考教材是夏帮贵编写的...

    Java Web开发中中文乱码问题的分析与解决方法 (1).pdf

    从介绍java常用字符编码集入手,详细分析了在java Web开发中产生中文乱码的原因,并针对原因提出了可行性解决方法。

    Java Web开发中的乱码问题分析及解决方案研究 (1).pdf

    【Java Web开发中的乱码问题】在开发Java Web应用程序时,中文乱码是一个常见的问题,尤其是在使用JSP和Servlet技术时。乱码的出现通常与字符编码有关,开发者需要理解和掌握不同的编码方式来解决这个问题。 【编码...

    海康威视WEB3开发包.zip

    4. **文档资料**:完整的开发文档是理解开发包功能和用法的重要参考资料,它可能包括了API参考、使用教程、常见问题解答等,帮助开发者在遇到问题时能够找到解决办法。 5. **兼容性**:Web3.0开发包通常会明确列出...

    Web前端开发试卷及答案.pdf

    Web 前端开发试卷及答案 以下是根据给定的文件生成的相关知识点: ... 1. 常用的 WEB 标准静态页面语言是 HTML。...这个试卷涵盖了 HTML、CSS、XHTML 等 Web 前端开发基础知识,以及一些常见的问题解决方法。

Global site tag (gtag.js) - Google Analytics