如何在.NET中转义HTML字符?
我从json字符串中抓取html,在标题中我得到"more text
。看起来我需要做两次以使"
成为"
然后成为'''。
如何在.NET中转义所有文本html转义码?
答案 0 :(得分:29)
如果你必须做两次,那么你已经对你的源字符串进行了双重编码,所以你必须对其进行双重解码才能恢复原始(未编码的)字符串。
您可以将System.Web.HttpUtility.HtmlEncode()
和HtmlDecode()
用于这些目的。
答案 1 :(得分:4)
查看HttpUtility课程。它有一些有用的静态函数。
但是,正如@codekaizen指出的那样,你看到的例子看起来是双重编码的。如果您无法控制源,那么请使用HttpUtility中的HtmlDecode
和(可能?)UrlDecode
函数进行操作,以便您可以幸运地撤消源代码的错误。
答案 2 :(得分:2)
看起来您的原始字符串是双重编码的。 quot;
只是一个部分实体,它不能单独解码为字符。如果你从一个你无法控制的网页上获得标题,你几乎无能为力,除非你没有,所以你需要进行双重解码。
答案 3 :(得分:1)
是的,你必须对字符串进行两次HTML解码,因为它似乎被编码了两次。
您应该查看源代码,并找出字符串首先是HTML编码的原因。它不应该,甚至不是一次。 JSON字符串不是HTML,因此根本不应该进行HTML编码。
要在JSON字符串中对引号进行编码,请使用反斜杠,因此正确的JSON应如下所示:
{"title":"\"I Won't Let Them Take You\""}