`

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  

分享到:
评论

相关推荐

    javascript 传参中文乱码解决方案

    在进行Web开发时,经常会遇到中文字符在URL传输过程中出现乱码的问题。这主要是因为不同的系统、浏览器或服务器可能采用不同的编码方式处理URL中的参数,导致原本正常的中文字符变成无法识别的乱码。本文将详细介绍...

    解决页面传参中文乱码

    在Web开发过程中,特别是在使用Java进行后端开发时,经常遇到的一个问题是中文字符或非ASCII字符在URL参数中的乱码问题。这主要是因为客户端浏览器与服务器之间可能使用的字符集不同导致的。本文将详细介绍如何通过`...

    url地址传参中文乱码处理

    URL地址传参中文乱码处理是指在Web应用程序中,将中文参数传递给服务器时,可能出现乱码的情况。这种情况可能是由于编码问题或Tomcat服务器的配置问题引起的。 在处理URL地址传参中文乱码时,通常有三种解决方案: ...

    Java Web程序开发中字符乱码的原因与解决办法.pdf

    Java Web程序开发中字符乱码的原因与解决办法 字符乱码问题是Java Web程序开发过程中经常遇到的一个问题,它会对用户界面的友好性以及信息的准确传达造成很大的影响。为了解决这个问题,我们首先要了解字符集和字符...

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

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

    力控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运行原理,以及如何解决常见的乱码...

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

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

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

    ### Web开发中乱码问题的研究与解决 #### 1. 引言 在Web开发过程中,乱码问题一直是困扰开发者的一大难题,尤其是在处理...通过以上方法,可以有效地避免和解决Web开发中的中文乱码问题,提高用户体验和应用质量。

    java web开发中常遇到的问题

    在 Java Web 开发中,开发者经常会遇到一些棘手的问题,影响项目的进度和质量。在这篇文章中,我们将列举一些常见的问题,并对其进行解释和解决。 1. java.lang.IllegalArgumentException: node to traverse cannot...

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

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

    关于虚拟目录继承根Web.Config的问题解决办法

    在探讨虚拟目录继承根Web.Config的问题解决办法时,我们深入剖析了如何在ASP.NET应用程序中管理配置设置,尤其是在处理虚拟目录与主应用之间的配置继承问题上。本文将围绕标题和描述中提到的关键知识点进行详细解释...

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

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

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

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

    海康威视WEB3开发包.zip

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

    SAP_ABAP_WebDynpro开发(中文)(官方文档)

    通过这个官方文档,SAP的目标是帮助开发者学习和掌握如何通过ABAP语言开发WebDynpro应用程序,并在SAP NetWeaver平台上实现业务解决方案。开发者应当结合实际业务需求和SAP开发的最佳实践,设计出既满足用户界面要求...

    Delphi+Web前端开发教程基于TMS+WEB+Core框架.pdf

    在使用TMS WEB Core开发过程中,掌握关键技能和组件至关重要。这些组件包括UI元素、数据绑定、网络通信等,它们帮助开发者构建功能丰富的Web应用。同时,TMS WEB Core的架构设计允许开发者轻松地扩展和自定义功能,...

    个人开发中遇到常见问题及解决办法(吐血总结)

    2 java中double类型数据运算不精确问题的解决办法(采用java.math.BigDecimal类来进行精确计算。) 3 get方式传值乱码问题解决 4 查询被锁的数据,解锁 ,数据库连接数 5 下拉框的数据回显 6 mybatis批量更新,批量...

Global site tag (gtag.js) - Google Analytics