如何在URL中转义#符号?

3
我在我的URL中想传递#符号作为参数,但是它会丢弃#后面的所有参数值。请给我建议。以下是我的URL:
GetConnectiont?   
  customerID=customer1&activenode=Sv50&parent=server&frame=imHealthCheckFrame&
connectedFrom=healthCheck&username=root&password=anil#1234&fromAskUsrPwd=askPassword

感谢您的提前准备。

你在Servlet中如何读取那个参数? - Mark Thomas
3个回答

10

根据此处找到的答案:如何在URL中转义Hash字符

使用%23替换#

您可以在此处找到所有保留字符的列表:百分号编码


关于JavaScript编码的说明

encodeURI(str)

"假定URI是完整的URI,因此不会对在URI中具有特殊含义的保留字符进行编码。 encodeURI将除以下字符外的所有字符替换为适当的UTF-8转义序列:" [1]

encodeURIComponent(str)

"除以下字符外,对所有字符进行转义:字母数字、- _ . ! ~ * ' ( )" [2]

在您的情况下,您将仅使用encodeURIComponent()对查询字符串进行转义,以转义任何保留字符。

!  %21 
#  %23 
$  %24 
&  %26 
'  %27 
(  %28 
)  %29 
*  %2A 
+  %2B 
,  %2C 
/  %2F 
:  %3A 
;  %3B 
=  %3D 
?  %3F 
@  %40 
[  %5B 
]  %5D

如果我用%23替换#,在servlet中获取该参数时是否需要将%23替换为#符号? - ANILBABU
可能在您的Servlet上定义一个字符编码方案?https://dev59.com/_XRB5IYBdhLWcg3w6bUE#470320 - Mr. Polywhirl

3

您需要对可能包含 # 的参数进行编码,然后在服务器端代码中解码该参数。

您可以使用互联网上的许多资源来对字符串进行 URL 编码,例如 这个。在您的情况下,anil#1234 变成了 anil%231234


1
你需要编码这个值(如果你使用字符串拼接来创建url)。在javascript中,你可以使用encodeURIComponent()
encodeURIComponent('anil#1234');//or your variable here

你能告诉我上面我给出的完整URL吗?谢谢。 - ANILBABU
@ANILBABU,URL 是如何生成的? - Arun P Johny
它从用户那里获取输入并创建一个URL。用户的输入可能包含特殊字符。 - ANILBABU
我已经在帖子中分享了我的URL......您能否看一下并提出解决方案?@arun P Johny - ANILBABU
@ANILBABU 我所询问的是生成URL的脚本。 - Arun P Johny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接