Html是否可以编码可能已经或可能尚未完全编码的内容?

时间:2010-06-17 09:42:14

标签: c# html asp.net-mvc encoding

我正在使用ASP.Net 4.0和MVC 2.我正在收到可能已经或可能不是Html编码的用户内容。我读过有趣的http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and-asp-net-mvc-2.aspx,但我需要的是确保内容编码而不进行双重编码的方法。我无法控制输入过程。

E.g。

用户输入:

&amp; &lt; < > &gt;  

如果编码输出:

&amp;amp; &amp;lt; &lt; &gt; &amp;gt;  

无法正确显示

如果未编码则输出:

&amp; &lt; < > &gt;

这将无法正确验证

3 个答案:

答案 0 :(得分:2)

您可以首先解码用户输入,然后重新编码结果。 这样,如果输入的某些值已经被编码,它们将被解码,并且您将能够对所有内容进行编码。

&amp; &lt; < > &gt;  

- &GT;解码输入,你得到:

& < < > >

- &GT;重新编码一切,你得到:

&amp; &lt; &lt; &gt; &gt

答案 1 :(得分:1)

如果是我,我只会替换<>个字符,而其他所有字符都保持不变。

答案 2 :(得分:0)

我认为您不会找到一个解决方案,该解决方案对于编码的内容都是自动生效的 - 我可以看到可靠地执行此操作的唯一方法是指定内容是否已编码。否则,在某些情况下会遇到问题,例如

Some plain text mentioning &gt; being the syntax for >

<p>Some HTML mentioning that &amp;amp; is the syntax for &gt;</p>

您可以尝试检测是否存在编码内容或HTML内容,但上面的示例显示这并不总是绝对可靠。