1

强文本给定一个已编码 n 次的字符串,如果我不知道 n 的值,我该如何解码该字符串以给我未编码的纯字符串。

澄清:

Initial : /unencoded?string/

Encoded Once : %2Funencoded%3Fstring%2F

Encoded Twice: %252Funencoded%253Fstring%252F

Encoded Three Times: %25252Funencoded%25253Fstring%25252F

我如何在不知道它已被编码三次的情况下%25252Funencoded%25253Fstring%25252F从到?/unencoded?string/

我知道我可以使用HttpServerUtility.UrlDecode或类似的,但这只解码一次。

4

2 回答 2

4

解码它,直到解码不再改变它。

string encodedString = "....";
string temp = string.Empty;
string decodedString = HttpServerUtility.UrlDecode(encodedString);
while (decodedString != temp)
{
    temp=decodedString;
    decodedString = HttpServerUtility.UrlDecode(temp);
}
于 2012-10-31T12:10:09.127 回答
2

下面更新了 hometoast 答案的 .NET 版本。

基本上只是HttpServerUtility.UrlDecode交换HttpUtility.UrlDecode

string encodedString = "....";
string temp = string.Empty;
string decodedString = HttpUtility.UrlDecode(encodedString);
while (decodedString != temp)
{
    temp=decodedString;
    decodedString = HttpUtility.UrlDecode(temp);
}
于 2017-12-29T17:12:41.767 回答