在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 特殊符号及编码: 1. + 号表示空格,编码为 %2B 2. 空格,编码为 %20 3. / ...
在ASP.NET开发过程中,我们时常会遇到URL参数传递中文字符时出现乱码的问题。这个问题主要源于字符编码不一致导致的,下面将详细讲解三种解决这个问题的方法。 ### 方法一:设置Web.config配置 在ASP.NET应用的`...
当我们需要通过URL传递参数时,经常会遇到中文参数的问题。这是因为URL本身是基于ASCII编码的,不支持直接传输非ASCII字符,如中文。本篇将详细介绍如何在Servlet中处理URL传递中文参数的情况。 首先,了解URL编码...
在页面的url中使用encodeURI(encodeURI(中文)),对中文... 您可能感兴趣的文章:js将json格式的对象拼接成复杂的url参数方法js的form表单提交url传参数(包含+等特殊字符)的两种解决方法JS根据key值获取URL中的参数值及
当我们需要在两个页面间通过URL传递参数时,经常会遇到中文乱码问题。这个问题主要是因为URL中的参数可能没有经过正确的编码和解码处理。为了解决这个问题,我们可以采取一些方法,特别是当使用jQuery来获取URL参数...
在JSP开发中,处理URL编码传递中文参数是常见的需求,尤其是在构建动态网页时。这个问题主要涉及到字符编码的转换,因为不同的编码标准可能导致乱码。以下是对这个主题的详细解释: 1. **URL编码**:URL(统一资源...
#### 二、URL参数传递 在JSP中,通常使用JavaScript来动态构建URL并传递参数。以下是一个典型的例子: ```javascript // 构建参数字符串 var pmt = 'sensor=' + encodeURI(encodeURI(sensor)) + 'device=' + ...
1.传递参数: 代码如下: var pmt = ‘sensor=’+ encodeURI(encodeURI(sensor))+’&device=’+encodeURI(encodeURI(device))+’&instrument=’; pmt += encodeURI(encodeURI(instrument))+’&n=’+n+’&addDate=’+...
1. **请求参数传递**:这是最基本的传递方式,通过在URL中添加查询参数或者在表单提交时包含参数。例如,你可以使用`<h:inputText value="#{bean.property}" />`这样的组件来获取用户的输入,并将其自动绑定到后台...
jsp使用URL编码传递中文参数乱码问题
Django是Python编程语言下的一款高级的Web框架,它遵循MVC(模型-视图-控制器)设计模式,而URL参数传递是Web开发中必不可少的一个环节。Django通过正则表达式配合URLCONF模块实现灵活的URL设计与参数传递。 在...
### 知识点详解:JSP页面中文参数传递GET与POST方法分析 #### 一、引言 在Java Web开发中,特别是在处理JSP页面时,中文参数的正确传递是常见的需求之一。不当的处理可能导致乱码问题,严重影响用户体验和数据的...
在IT领域,尤其是在Web开发中,处理URL传递参数时遇到中文乱码是一个常见的问题,尤其当数据需要跨系统或在不同编码环境下传输时更为显著。本文将深入探讨URL传参数时中文乱码的原因、影响以及如何有效解决这一问题...
在参数值、参数名称以及报表名称中,如果包含中文字符或特殊字符,直接传递可能会导致乱码或错误问题。因此,需要对这些中文或特殊字符进行编码转换。 为了解决这个问题,FineReport提供了一个内部封装的编码方法,...
在Asp.Net开发中,遇到页面通过URL参数传递中文字符时出现乱码是一个常见的问题。这个问题通常是由于字符编码不一致导致的。以下是三种常见的解决方法: 1. **配置Web.config文件**: 在Web.config文件的`...
在Java开发中,URL参数加密解密是网络安全的重要环节,特别是在J2EE应用程序中,确保数据传输的安全性至关重要。URL参数通常包含用户敏感信息,如登录凭证、交易详情等,因此需要进行加密处理以防止数据在传输过程中...
因此,对于需要作为参数传递的数据,推荐使用`encodeURIComponent()`。 **示例代码**: ```javascript var drugName = "中药名称"; // 使用encodeURIComponent进行编码 drugName = encodeURIComponent(drugName); `...
然而,当我们在GET请求的URL中直接传递包含中文字符的参数时,可能会遇到乱码问题。这是因为不同系统、浏览器和服务器对字符编码的支持不一致,导致在传输过程中中文字符无法正确解析。以下是对这个问题的深入探讨和...
对于URL中需要传递的中文参数,推荐使用`Server.UrlEncode`方法进行编码,`Server.UrlDecode`方法进行解码。例如: ```csharp // 编码 string name = "测试"; Response.Redirect("B.aspx?Name=" + Server.UrlEncode...
有两种方式可以实现中文参数的传递,即 URL 方式和 FORM 方式。 URL 方式 在 URL 方式中,我们可以直接在 URL 里面写中文参数,但是这种方式有缺陷。在接收参数的页面,我们需要对 URL 中的中文字符进行转换,以便...