`
caleb_520
  • 浏览: 251288 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

URL中文参数传递

阅读更多
在Java Web编程的学习中,大家都会遇到URL传递参数问题。其中如果想在URL进行中文参数的传递,那就要注意中文转码问题。不然会出现乱码。下面给出解决URL地址传递中文参数问题

第一种:利用URLEncoder类来进行处理
(1)首先创建一个FileList.jsp,代码如下
<%@ page contentType="text/html; charset=gb2312" language="java" errorPage="" %> 
<%@ page import = "java.net.*" %> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
<title>文件下载列表</title> 
</head> 
<body> 
[url=Video.jsp?value=<%=URLEncoder.encode(]">视频文件[/url] 
</body> 
</html> 

从上面的URL可以看出<a href="Video.jsp?value=<%=URLEncoder.encode("刘阳","gb2312")%>">,利用URLEncoder对中文的汉字进行编码
(2)创建Video.jsp,用来获取value参数值。代码如下:
<%@ page contentType="text/html; charset=gb2312" language="java" errorPage="" %> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
<title>视频文件</title> 
</head> 
<body> 
<% 
String str = request.getParameter("value"); 
%> 
<% 
System.out.println(new String(str.getBytes("iso-8859-1"),"gb2312")); 
%> 
<object id= "player" classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" width= "320" height= "217"> 
<param NAME="AutoStart" VALUE="1"> 
<param name= "url" value= "I_will_survive_Alien.mpeg"> 
</object> 
</body> 
</html> 


1、URL中编码格式为ISO-8859-1,处理中文只需将编码格式转换ISO-8859-1

2、IE缺省对URL后面的参数是不编码发送的,但是tomat缺省是按ISO8859-1来进行URL解码

第二种:在Tomcat的中server.xml文件中加入URIEncoding="GBK",具体代码如下
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --> 
<Connector port="8888" maxHttpHeaderSize="8192" 
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75" 
               enableLookups="false" redirectPort="8443" acceptCount="100" 
               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"/> 
然后重新启动Tomcat服务器
(1)创建FileList.jsp,代码如下
<%@ page contentType="text/html; charset=gb2312" language="java" errorPage="" %> 
<%@ page import = "java.net.*" %> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
<title>文件下载列表</title> 
</head> 
<body> 
[url=/JavaWeb/DownLoad?value=java精通swing程序设计.asp.chm]下载文件[/url] 
</body> 
</html>

(2)创建一个DownLoad.java文件,来获取value的值
String s = request.getParameter("value");

第三种:利用request.setCharacterEncoding("UTF-8"),下面会给出两个JSP页面,index.jsp和error.jsp

index.jsp页面的源码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ page errorPage="" %>
<%@ page session="true" %>
<%@ page import="java.net.*" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
  <% request.setCharacterEncoding("UTF-8"); %>
    This is my JSP page. <br>
    <jsp:include page="error.jsp">
    	<jsp:param name="value" value="我是帅哥"/>
    </jsp:include>
  </body>
</html>


error.jsp页面源码
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>My JSP 'error.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    <%
    	String a = request.getParameter("value");
    	out.println("此内容是来源于index.jsp页面传过来的数据: " + a);
    %><br>
  </body>
</html>


以上代码的运行流程:在index.jsp页面中加入了<jsp:include>标签,同时为URL传递了一个中文参数。首先,设置此两个页面的编码方式为UTF-8,然后在index.jsp页面中加入request.setCharacterEncoding("UTF-8"),此方法作用就是将URL中的请求数据进行UTF-8编码。这样子才能显示正常的中文,因为URL传递参数的默认编码是“ISO-8859-1”
分享到:
评论

相关推荐

    url参数中传递特殊字符处理方法

    在进行 URL 参数传递时,需要处理特殊字符的编码问题。因为有些符号在 URL 中是不能直接传递的,需要使用他们的编码。以下是常见的 URL 特殊符号及编码: 1. + 号表示空格,编码为 %2B 2. 空格,编码为 %20 3. / ...

    jsp中URL传递中文参数的处理方法

    在页面的url中使用encodeURI(encodeURI(中文)),对中文... 您可能感兴趣的文章:js将json格式的对象拼接成复杂的url参数方法js的form表单提交url传参数(包含+等特殊字符)的两种解决方法JS根据key值获取URL中的参数值及

    asp.net中URL参数传值中文乱码的三种解决办法

    在ASP.NET开发过程中,我们时常会遇到URL参数传递中文字符时出现乱码的问题。这个问题主要源于字符编码不一致导致的,下面将详细讲解三种解决这个问题的方法。 ### 方法一:设置Web.config配置 在ASP.NET应用的`...

    servlet url传递中文参数

    当我们需要通过URL传递参数时,经常会遇到中文参数的问题。这是因为URL本身是基于ASCII编码的,不支持直接传输非ASCII字符,如中文。本篇将详细介绍如何在Servlet中处理URL传递中文参数的情况。 首先,了解URL编码...

    jquery获取URL中参数解决中文乱码问题的两种方法

    当我们需要在两个页面间通过URL传递参数时,经常会遇到中文乱码问题。这个问题主要是因为URL中的参数可能没有经过正确的编码和解码处理。为了解决这个问题,我们可以采取一些方法,特别是当使用jQuery来获取URL参数...

    jsp使用URL编码传递中文参数问题.doc

    在JSP开发中,处理URL编码传递中文参数是常见的需求,尤其是在构建动态网页时。这个问题主要涉及到字符编码的转换,因为不同的编码标准可能导致乱码。以下是对这个主题的详细解释: 1. **URL编码**:URL(统一资源...

    JSP中js传递和解析URL参数以及中文转码和解码问题.docx

    #### 二、URL参数传递 在JSP中,通常使用JavaScript来动态构建URL并传递参数。以下是一个典型的例子: ```javascript // 构建参数字符串 var pmt = 'sensor=' + encodeURI(encodeURI(sensor)) + 'device=' + ...

    JSP中js传递和解析URL参数以及中文转码和解码问题

    1.传递参数: 代码如下: var pmt = ‘sensor=’+ encodeURI(encodeURI(sensor))+’&device=’+encodeURI(encodeURI(device))+’&instrument=’; pmt += encodeURI(encodeURI(instrument))+’&n=’+n+’&addDate=’+...

    JSF中文教程+JSF参数传递方式

    1. **请求参数传递**:这是最基本的传递方式,通过在URL中添加查询参数或者在表单提交时包含参数。例如,你可以使用`&lt;h:inputText value="#{bean.property}" /&gt;`这样的组件来获取用户的输入,并将其自动绑定到后台...

    jsp使用URL编码传递中文参数乱码问题

    jsp使用URL编码传递中文参数乱码问题

    Django中URL的参数传递的实现

    Django是Python编程语言下的一款高级的Web框架,它遵循MVC(模型-视图-控制器)设计模式,而URL参数传递是Web开发中必不可少的一个环节。Django通过正则表达式配合URLCONF模块实现灵活的URL设计与参数传递。 在...

    知识共享-jsp页面中文参数传递get和post方法分析(雷惊风).

    ### 知识点详解:JSP页面中文参数传递GET与POST方法分析 #### 一、引言 在Java Web开发中,特别是在处理JSP页面时,中文参数的正确传递是常见的需求之一。不当的处理可能导致乱码问题,严重影响用户体验和数据的...

    URL传参数时中文乱码解决方法

    在IT领域,尤其是在Web开发中,处理URL传递参数时遇到中文乱码是一个常见的问题,尤其当数据需要跨系统或在不同编码环境下传输时更为显著。本文将深入探讨URL传参数时中文乱码的原因、影响以及如何有效解决这一问题...

    Web报表FineReport页面如何传递中文参数

    在参数值、参数名称以及报表名称中,如果包含中文字符或特殊字符,直接传递可能会导致乱码或错误问题。因此,需要对这些中文或特殊字符进行编码转换。 为了解决这个问题,FineReport提供了一个内部封装的编码方法,...

    asp.net页面通过URL参数传值中文乱码问题解决办法

    在Asp.Net开发中,遇到页面通过URL参数传递中文字符时出现乱码是一个常见的问题。这个问题通常是由于字符编码不一致导致的。以下是三种常见的解决方法: 1. **配置Web.config文件**: 在Web.config文件的`...

    URL参数加密解密(java版)

    在Java开发中,URL参数加密解密是网络安全的重要环节,特别是在J2EE应用程序中,确保数据传输的安全性至关重要。URL参数通常包含用户敏感信息,如登录凭证、交易详情等,因此需要进行加密处理以防止数据在传输过程中...

    ajax传递中文参数乱码解决办法

    因此,对于需要作为参数传递的数据,推荐使用`encodeURIComponent()`。 **示例代码**: ```javascript var drugName = "中药名称"; // 使用encodeURIComponent进行编码 drugName = encodeURIComponent(drugName); `...

    GET方法URL中传递中文参数乱码的解决方法

    然而,当我们在GET请求的URL中直接传递包含中文字符的参数时,可能会遇到乱码问题。这是因为不同系统、浏览器和服务器对字符编码的支持不一致,导致在传输过程中中文字符无法正确解析。以下是对这个问题的深入探讨和...

    ASP.NET中url传递中文的解决方案

    对于URL中需要传递的中文参数,推荐使用`Server.UrlEncode`方法进行编码,`Server.UrlDecode`方法进行解码。例如: ```csharp // 编码 string name = "测试"; Response.Redirect("B.aspx?Name=" + Server.UrlEncode...

    JSP页面中文参数的传递(get和post方法分析).docx

    有两种方式可以实现中文参数的传递,即 URL 方式和 FORM 方式。 URL 方式 在 URL 方式中,我们可以直接在 URL 里面写中文参数,但是这种方式有缺陷。在接收参数的页面,我们需要对 URL 中的中文字符进行转换,以便...

Global site tag (gtag.js) - Google Analytics