`

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中的参数,导致原本正常的中文字符变成无法识别的乱码。本文将详细介绍...

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

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

    解决web开发中的中文问题.doc

    ### 解决Web开发中的中文问题 在Web开发过程中,中文乱码问题是非常常见的一个问题,尤其对于使用Tomcat服务器的应用程序来说。本篇文章将详细介绍导致这一问题的原因以及如何解决这一问题。 #### 一、问题背景与...

    java 中文问题(java web 开发中的中文问题)

    Java 中文问题是 Java web 开发中常见的一种问题,解决该问题需要了解 Java 中文编码、字符集和过滤器的使用。本文将总结 Java 中文问题的解决方法,并提供实践经验和代码示例。 一、支持中文 在 Java 中,支持...

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

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

    解决页面传参中文乱码

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

    Java WEB开发中的中文乱码问题解决方法.pdf

    在Java Web开发中,中文乱码问题一直是开发人员面临的常见问题之一。中文乱码通常是由于在字符编码转换过程中,字符集不一致或设置不当所导致。为了解决这一问题,首先需要了解Java Web工程字符编码的基本理论,包括...

    PHP、web前端开发-页面传参POST方法.pptx

    总结起来,PHP和前端开发中的页面传参POST方法是Web应用中常见的数据传递方式,它允许我们在不暴露敏感信息的情况下提交表单数据。通过理解这一机制,开发者能够更好地构建健壮、安全的Web应用程序。记住,无论在PHP...

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

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

    配置web-xml解决中文乱码问题.pdf

    本文主要讨论了在 Web 开发中遇到的中文乱码问题,并提供了一些解决方案。首先,需要确定中文乱码问题不是由浏览器引起的,然后讨论了 Tomcat 服务器配置和数据库 bean 配置中的一些解决方案。 一、浏览器配置问题 ...

    PHP、web前端开发-页面传参GET方法.pptx

    本话题将深入探讨页面传参中的GET方法,这是一种常见的数据传递方式,尤其适用于简单且不涉及敏感信息的数据传输。 GET方法是HTTP协议中的一个请求方法,用于从服务器获取资源。在PHP和前端开发中,GET方法常用于...

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

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

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

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

    触摸屏Web应用开发关键问题及解决办法

    触摸屏Web应用开发关键问题及解决办法 在触摸屏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年...

Global site tag (gtag.js) - Google Analytics