如何在查询字符串中发送特殊字符?
像:
thankyou.aspx?data=GQH/FUvq9sQbWwrYh5xX7G++VktXU5o17hycAfNSND8gt8YbbUaJbwRw
当我这样做时, ++ 会被删除:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim theData As String = Request.QueryString("data")
....
它将它存储在数据中,如下所示:
GQH / FUvq9sQbWwrYhxx7G VktXU5o17hycAfNSND8gt8YbbUaJbwRw
因此无效。我怎样才能正确发送该字符串而不改变它一旦收到它?
更新
这样做:
Dim en As String = endecryption.EncryptData("=" & "aclub" & "=" & strName & "=" & strEmail)
Response.Redirect("/thankyou.aspx?data=" & HttpUtility.UrlEncode(en), False)
在另一端:
Dim theData As String = HttpUtility.UrlDecode(Request.QueryString("data"))
它发送如下: GQH%2fFUvq9sQbWwrY5xX7G%2bVktXU5o17hycAfNSND8gt8YbbUaJbwRw
但它解码它像: GQH / FUvq9sQbWwrYh5xX7G [此处2个空格] VktXU5o17hycAfNSND8gt8YbbUaJbwRw
答案 0 :(得分:3)
看一下使用Server.UrlEncode()对参数进行编码,然后将其包含在查询字符串中,并在需要时使用Server.UrlDecode()将其转换回来。
在“GQH / FUvq9sQbWwrYh5xX7G ++ VktXU5o17hycAfNSND8gt8YbbUaJbwRw”上调用Server.UrlEncode()产生:
GQH%2fFUvq9sQbWwrYh5xX7G%2b%2bVktXU5o17hycAfNSND8gt8YbbUaJbwRw
并在该结果上调用Server.UrlDecode会产生:
GQH/FUvq9sQbWwrYh5xX7G++VktXU5o17hycAfNSND8gt8YbbUaJbwRw
您需要确保在将查询字符串数据附加到网址之前对其进行网址编码。
答案 1 :(得分:1)
你可以:
唉。它回到我身边 - base64陷阱:“HttpRequest的构造函数将解析实际的字符串QueryString和UrlDecode为你的值。注意不要双重解码。” - Scott Hanselman
我个人的建议是,如果你打算做base64,那就去UrlToken路线...