转换为 URL 编码

Posted

技术标签:

【中文标题】转换为 URL 编码【英文标题】:Convert to URL encode 【发布时间】:2015-04-27 01:33:12 【问题描述】:

我不太确定这个问题的主题是否恰当。问题来了:

我正在阅读页面内容以获取对 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。但是,正如您所见,它包含&amp;#047;&amp;#061; 等字符,这些字符转换为%2F%3D。通过代码执行此操作的任何方式 - 标准 URL 编码都无法更改它,因为我猜测它已经编码。我正在使用 .Net。

【问题讨论】:

【参考方案1】:

要完成 Arunster 的回答,您需要同时使用 htmlDecode()UnescapeDataString() 将其转换为直接 URL。您不需要通过 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"))

【讨论】:

【参考方案2】:

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

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

产量:

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

我猜这就是你要找的。​​p>

【讨论】:

谢谢,是的,这就是我要找的。​​span>

以上是关于转换为 URL 编码的主要内容,如果未能解决你的问题,请参考以下文章

浏览器端将语音转换为URL格式的字符串(base64 位编码)

如何将 protobuf 对象转换为 ByteArray 并在 Swift 中使用 Base64 URL_SAFE 进行编码?

AS3将正斜杠转换为URL编码字符%2F

ASIHttpRequest - 如何将参数的 NSDictionary 转换为 url 编码的查询参数字符串?

JavaScript将url转换为gb2312编码问题

C# URL编码转换 URL转码 UrlDecode UrlEncode