如何在JavaScript中编码URL并在C#中解码?

9

我有一个带有查询字符串的URL,通过它传递了一些数据。我想在服务器端检索数据。这个问题的解决方案是什么?

3个回答

12

您可以使用JavaScript的escape函数来编码URL。

Example : 
escape("It's me!") // result: It%27s%20me%21

使用Uri.UnescapeDataString()函数在C#中进行URL解码。

Example : 
s = "%46%69%67%68%74%20%74%68%65%20%70%6F%77";
Uri.UnescapeDataString(s); 

编辑 -------------------------

要在C#中解析查询参数,请使用:

NameValueCollection qscoll = HttpUtility.ParseQueryString(querystring);

希望这可以帮助到你。

谢谢!

Hussain


我的URL类似于window.open("../EBox/ShowLetter.aspx?DocumentId="+DocumentID+"&SectionType=1&RecID="+RecipientID,'PrintMail', features); 我想要检索querystring DocumentId、SectionType和RecID。如果有这3个querystrings,我该如何获取它们的值? - Poornima
我可以像你说的那样解码整个URL,但如何从中获取查询字符串呢? - Poornima
使用JavaScript进行编码,然后在C#中解码URL,最后获取查询字符串的值。 - Poornima
请提供更新后的答案,我会尽快为您翻译。 - eHussain
注意:转义字符不能正确地转义所有UTF-8字符。更好的选择是使用encodeURI或encodeURIComponent。 - ndtreviv

4
您可以在Javascript端使用escape(http://www.w3schools.com/jsref/jsref_escape.asp)或encodeURI(http://www.w3schools.com/jsref/jsref_encodeuri.asp)进行编码。

在服务器端: 对于C# - 使用System.Web.HttpUtility.UrlDecode进行解码(http://msdn.microsoft.com/en-us/library/adwtk1fy.aspx) 对于Java - 使用URLDecoder进行解码(http://download.oracle.com/javase/1.5.0/docs/api/java/net/URLDecoder.html) 对于PHP - 使用urldecode(http://php.net/manual/en/function.urldecode.php


3
  • 在Javascript中,unescape(_stringEncoded)与C#中的HttpUtility.UrlDecode(_string)相同。
  • 在Javascript中,escape(_setringDecoded)与C#中的HttpUtility.UrlEncode(_string)相同。

同时进行编码/解码

Javascript编码

escape('raj kumar') //raj%20kumar

C#解码

HttpUtility.UrlDecode("raj%20kumar") //raj kumar

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