转换为URL编码

时间:2015-02-25 06:24:19

标签: c# .net regex vb.net

我不确定这个问题的主题是否合适。这是一个问题:

我正在阅读页面内容以获取对URL的引用。内容如下所示:

<form method="get" action="/errors/validateCaptcha" name="">
                        <input type=hidden name="amzn" value="VGNBhB9ceCBo2YWErppFwA==" /><input type=hidden name="amzn-r" value="&#047;s&#047;ref&#061;nb_sb_noss?url&#061;search&#045;alias&#037;3Daps&amp;field&#045;keywords&#061;1573624098" /><input type=hidden name="amzn-pt" value="NoPageType" />

我正在尝试阅读字段amzn-r。但是,您可以看到它包含&#047;&#061;等字符,这些字符会转换为%2F%3D。任何通过代码执行此操作的方法 - 标准URL编码无法更改此内容,因为我猜测它已编码。我正在使用.Net。

2 个答案:

答案 0 :(得分:1)

您可以使用System.Web库中提供的HttpUtility.HtmlDecode方法。 用法是传递字符串以解码值。

所以,在你的情况下: HttpUtility.HtmlDecode("&#047;s&#047;ref&#061;nb_sb_noss?url&#061;search&#045;alias&#037;3Daps&amp;field&#045;keywords&#061;1573624098");

产量:

/s/ref=nb_sb_noss?url=search-alias%3Daps&field-keywords=1573624098

我想这就是你要找的东西。

答案 1 :(得分:1)

要完成Arunster的回答,您需要同时使用HtmlDecode()UnescapeDataString()将其转换为直接网址。您无需通过System.Web命名空间调用它,因为这需要您将System.Web引用包含到项目中,这在桌面应用程序中默认不可用。相反,您可以使用以下替代方案:

string PlainURL = System.Uri.UnescapeDataString( System.Net.WebUtility.HtmlDecode("&#047;s&#047;ref&#061;nb_sb_noss?url&#061;search&#045;alias&#037;3Daps&amp;field&#045;keywords&#061;1573624098"))