如何在.NET中转义HTML字符? --> "

16

如何在.NET中转义HTML字符?

我从JSON字符串中获取HTML,标题中出现了"more text。看起来我需要两次转义才能将"变成",然后再将其转换为'"'。

如何在.NET中转义所有文本的HTML转义代码?


可能是为HTML转义文本的重复问题。 - Aaron Jensen
4个回答

33

如果你需要重复操作两次,那么你的源字符串已经被双重编码了,因此你需要进行双重解码才能恢复到原始(未编码)字符串。

为此,可以使用System.Web.HttpUtility.HtmlEncode()HtmlDecode() 方法。


4
请看HttpUtility类,它具有一些有用的静态函数。
然而,正如@codekaizen所指出的那样,您提供的示例似乎是双重编码的。如果您无法控制源代码,则可以尝试使用HttpUtility中的HtmlDecode和(也许?)UrlDecode函数进行调整,以便您可以幸运地撤消源代码中的错误。

2

看起来你的原始字符串被双重编码了。 quot; 只是一个部分实体,它本身不能被解码为字符。如果你正在从一个你无法控制的网页获取标题,那么你所能做的就是像你所说的那样进行双重解码。


1

是的,你需要对字符串进行两次HTML解码,因为它似乎被编码了两次。

也许你应该查看源代码,找出为什么字符串首先被编码为HTML。它不应该被编码,甚至不止一次。JSON字符串不是HTML,因此根本不应该被编码为HTML。

要在JSON字符串中编码引号,可以使用反斜杠,因此正确的JSON应该类似于:

{"title":"\"I Won't Let Them Take You\""}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接