2015-02-25 2 views
0

Я не уверен, подходит ли тема вопроса. Возникает вопрос:Преобразование в URL-код

Я читаю содержимое страницы, чтобы получить ссылку на 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.

ответ

1

Чтобы ответить автору, вам необходимо использовать оба 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")) 
1

Вы можете использовать метод HttpUtility.HtmlDecode, который доступен в библиотеке System.Web. Использование будет состоять в том, чтобы передать строку для декодирования значения.

Таким образом, в вашем случае: 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 

Я предполагаю, что это то, что вы ищете.

+0

Спасибо, да, именно это я и искал. – Kallol

Смежные вопросы