HTML / Url对多次编码的字符串进行解码

sas*_*jaq 5 c#

我们有一个从网页读取的字符串。由于浏览器可以容忍未编码的特殊字符(例如,“&”号),因此某些页面使用它进行了编码,有些则没有进行编码……因此很有可能,我们存储了一些编码一次的数据,而某些数据则多次存储了……

是否有一些明确的解决方案,如何确定,无论我的字符串被编码了多少次,都可以对其进行足够的解码?

这是我们现在使用的:

public static string HtmlDecode(this string input)
{
     var temp = HttpUtility.HtmlDecode(input);
     while (temp != input)
     {
         input = temp;
         temp = HttpUtility.HtmlDecode(input);
     }
     return input;
}
Run Code Online (Sandbox Code Playgroud)

并与UrlDecode一起使用。

Han*_*ney 3

老实说,这可能是最好的方法。真正的解决方案是重新编写代码,以便您只能在所有位置对内容进行单独编码,这样您就只能对它们进行单独解码。