C# URL传值中有一个#符号传不过去

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# URL传值中有一个#符号传不过去相关的知识,希望对你有一定的参考价值。

<a href="ForcumnamezInfo.aspx?name=C# 001"; >
</a>
这里我要传的值是C# 001,可发现传过去的只有C这一个字母,#符号以及#后面的数字全都自动截断!!如果把上面要传的参数改为C 001传过去一点问题也没有,说明是#符号不能传,并且#后面的全都自动被程序自动截断。请问高手有何解决办法?
按照网上改成了
<span onclick="javascript:location.href='ForcumnamezInfo.aspx?name='+urlencode("C# 001")" ></span>
可是一点效果也没有

参考技术A 直接把#改成%23,不用UrlEncode也可以。
另外,javascript是区分大小写的,函数urlencode与函数UrlEncode并不一样!本回答被提问者采纳
参考技术B #号指定书签
#号后面的就是书签的名称

"C# 001"你想要把这个东西当作name的值就不能使用C#.UrlEncode对#号是不起作用的.你可以把#号换成其它符号,比如下划线.传到后台再替换回变成#号.
参考技术C URL特殊字符需转义

1、空格换成加号(+)
2、正斜杠(/)分隔目录和子目录
3、问号(?)分隔URL和查询
4、百分号(%)制定特殊字符
5、#号指定书签
6、&号分隔参数

转义字符的原因:

如果你的表单使用get方法提交,并且提交的参数中有“&”等特殊符的话,如果不做处理,在service端就会将&后面的作为另外一个参数来看待。例如
表单的action为list.jsf?act=go&state=5
则提交时通过request.getParameter可以分别取得act和state的值。
如果你的本意是act='go&state=5'这个字符串,那么为了在服务端拿到act的准确值,你必须对&进行转义

url转义字符原理:

将这些特殊的字符转换成ASCII码,格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。例如 空格的编码值是"%20"。

URL特殊符号及对应的十六进制值编码:

1. + URL 中+号表示空格 %2B
2. 空格 URL中的空格可以用+号或者编码 %20
3. / 分隔目录和子目录 %2F
4. ? 分隔实际的 URL 和参数 %3F
5. % 指定特殊字符 %25
6. # 表示书签 %23
7. & URL 中指定的参数间的分隔符 %26
8. = URL 中指定参数的值 %3D
参考技术D 换成UrlEncode试试

url传值含有特殊符号会被转义,怎样保证所有特殊符号都被编码?

url传值含有特殊符号会被转义,对符号进行编码,但是只能针对部分符号,怎么才能让所有符号都能正常传递呢?

参考技术A 请使用encodeURIComponent方法进行转义追问

就是使用了这个方法,但是他对双引号、单引号和&都不管用,我说的是所有符号。。。。

追答

&符号等算是url中的特殊符号,是用来进行参数传递区分的,建议你先对这些特殊符号进行编码后再进行解码,我一般用rest方式,这些都很easy

追问

关键是没有一种编码方式是针对所有特殊符号的吧,rest不懂。。。

追答

js只提供了这个两个函数,你可以看看base64编码

以上是关于C# URL传值中有一个#符号传不过去的主要内容,如果未能解决你的问题,请参考以下文章

地址传值中截取地址栏中的参数

url传值含有特殊符号会被转义,怎样保证所有特殊符号都被编码?

url请求传值中间有#号时后面的值都会获取不到

php之间怎么传值

JSP页面的跳转及传值

jaxa无法传值?