URL的参数中有加号传值的问题

cnwolfwind 2010-12-16 03:13:43

String url="currentBakDetail.jsp?devName=光端机&devType=中威40KM单模2V+1D&devMoney=222.0";
out.print("<td align='center' valign='middle' bgcolor='#CCCCCC'><a href=javascript:OpenShowDialog('"+url+"','明细','800','600')>"光端机+"</a></td>");

另外一个页面

String devType=request.getParameter(devType)


为什么得到的devType值总是去掉加号
加上这句

devTypeName=devType.replace("+","%2B");

输出的也是没有加号的:得到的devType值都是中威40KM单模2V 1D都变成空格
...全文
2884 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnwolfwind 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 bao110908 的回复:]
URL 参数值根据 HTTP 的规范是不允许出现汉字,以及加号等特殊字符的,需要使用 URL 进行编码。

JavaScript: encodeURI 函数

JAVA: URLEncoder.encode 方法
[/Quote]

老大,那帮我改一下11楼的代码,让我测试一下
我怎么编码都不对
我觉得跟我使用的这个模态窗口有关
  • 打赏
  • 举报
回复
URL 参数值根据 HTTP 的规范是不允许出现汉字,以及加号等特殊字符的,需要使用 URL 进行编码。

JavaScript: encodeURI 函数

JAVA: URLEncoder.encode 方法
cnwolfwind 2010-12-16
  • 打赏
  • 举报
回复
<script language="javascript">
function OpenShowDialog(mylink,mytitle,width,height)
{
var isReflesh = window.showModalDialog(mylink,window,mytitle,'dialogTop=300,dialogLeft=360,dialogHeight='+height+'px;dialogWidth='+width+'px;status:no;scroll:no;help:no')

}
</script>
<%

String url="test1.jsp?devName=光端机&devType=中威ws%2B12";

out.print("<a href=javascript:OpenShowDialog('"+url+"','dd','500','400')>光端机</a>");
<br>
out.print("<a href="+url+")>光端机</a>");
<br>
out.print(url);

%>

这样一个页面,在test1中request.getParameter(devType)取到的值,第一种取到是中威ws+12
第二种取到的是中威ws 12(中间是空格)

求解啊!!!!!!!!
cnwolfwind 2010-12-16
  • 打赏
  • 举报
回复
顶一下,还没解决方案
宁波朱超 2010-12-16
  • 打赏
  • 举报
回复
因为你传了 中文 乱码啊 乱码 乱码呀咿呀
xkj942gry 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cnwolfwind 的回复:]
我是想在A页面把加号转化成%2B,然后传递给B页面,在B页面将%2B再转为+号,但是现在是在字符串形式下,是转化为%2B了,到URL可能还是有“+”号
[/Quote]

顶下
Vhero 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cnwolfwind 的回复:]

引用 4 楼 jiankewuming 的回复:
改成这样的String url="currentBakDetail.jsp?devName=光端机&amp;devType=encodeURIComponent(中威40KM单模2V+1D)&amp;devMoney=222.0";
因为url中不允许出现一些特殊的字符。如果出现的话,会给你转换成别的。


你这个强的,……
[/Quote]
session不要放一些乱七八糟的东西,否则会挨骂的
js中也可以进行转码的,你原本说的是正确的
在javascript中也有类似功能的方法,escape()用于编码,unescape()用于解码.
encodeURIComponent()编码范围比encodeURI大些
decodeURIComponent()解码范围比encodeURI大些
encodeURI()对一个URI编码
decodeURI()对一个URI解码
如果不行就用可以通过java.net.URLEncoder.encode()给一个URL编码,然后通过java.net.URLDecode.decode()解码.
jiankewuming 2010-12-16
  • 打赏
  • 举报
回复
哦。不好意思,我以为是在js中呢。你可以把参数放到session中。然后从另外一个页面中取出来。
cnwolfwind 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jiankewuming 的回复:]
改成这样的String url="currentBakDetail.jsp?devName=光端机&devType=encodeURIComponent(中威40KM单模2V+1D)&devMoney=222.0";
因为url中不允许出现一些特殊的字符。如果出现的话,会给你转换成别的。
[/Quote]

你这个强的,js跟java一起上了
呵呵,肯定不行的
jiankewuming 2010-12-16
  • 打赏
  • 举报
回复
改成这样的String url="currentBakDetail.jsp?devName=光端机&devType=encodeURIComponent(中威40KM单模2V+1D)&devMoney=222.0";
因为url中不允许出现一些特殊的字符。如果出现的话,会给你转换成别的。
cnwolfwind 2010-12-16
  • 打赏
  • 举报
回复
我是想在A页面把加号转化成%2B,然后传递给B页面,在B页面将%2B再转为+号,但是现在是在字符串形式下,是转化为%2B了,到URL可能还是有“+”号
cnwolfwind 2010-12-16
  • 打赏
  • 举报
回复
String url="currentBakDetail.jsp?devName=光端机&devType=中威40KM单模2V%2B1D&devMoney=222.0";
我觉得奇怪的是我在这个页面中的+号转化%2B,可是右键点击页面中的超链接看到的还是+号,而不是%2B
liju123456 2010-12-16
  • 打赏
  • 举报
回复
他不能编译,你换成编码就可以了

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧