C #에서 HTML 사용을 위해 텍스트를 이스케이프 처리하려면 어떻게합니까? 나하고 싶어
sample="<span>blah<span>"
하고있다
<span>blah<span>
html의 태그 부분에만 blah 대신 일반 텍스트로 표시 :(. ASP가 아닌 C # 사용
C #에서 HTML 사용을 위해 텍스트를 이스케이프 처리하려면 어떻게합니까? 나하고 싶어
sample="<span>blah<span>"
하고있다
<span>blah<span>
html의 태그 부분에만 blah 대신 일반 텍스트로 표시 :(. ASP가 아닌 C # 사용
답변:
using System.Web;
var encoded = HttpUtility.HtmlEncode(unencoded);
또한 System.Web
어셈블리 를 사용하지 않으려는 경우이를 사용할 수 있습니다 .
var encoded = System.Security.SecurityElement.Escape(unencoded)
당 이 문서 의 차이 System.Security.SecurityElement.Escape()
및 System.Web.HttpUtility.HtmlEncode()
전자도 아포스트로피 인코딩한다는 것입니다 (')
문자.
SecurityElement.Escape()
피할 수는 없습니다.
당신이 나보다 .NET 4를 사용하고 참조 할 수없는 경우 System.Web
, 당신은 사용할 수 있습니다 WebUtility.HtmlEncode
에서System
var encoded = WebUtility.HtmlEncode(unencoded);
이것은 동일한 효과를 HttpUtility.HtmlEncode
가지며보다 바람직합니다 System.Security.SecurityElement.Escape
.
아직 아무도 언급하지 않았지만 ASP.NET 4.0에는이를위한 새로운 구문이 있습니다. 대신에
<%= HttpUtility.HtmlEncode(unencoded) %>
당신은 단순히 할 수 있습니다
<%: unencoded %>
여기에서 더 읽으십시오 : 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
여기서 보지 못했습니다
System.Web.HttpUtility.JavaScriptStringEncode("Hello, this is Satan's Site")
이와 같은 HTML을 다룰 때 유일하게 작동하는 것은 (asp 4.0 이상)이었습니다. 는 '
로 렌더링 도착 '
실패를 일으키는 HTML로 (htmldecode 사용) :
<a href="article.aspx?id=268" onclick="tabs.open('modules/xxx/id/268', 'It's Allstars'); return false;">It's Allstars</a>
HtmlEncode에 의해 제거되지 않은 특수 인용 부호 문자가 있으며”및“와 같이 Edge 또는 IE에 올바르게 표시되지 않습니다. 이러한 문자를 아래 기능과 같은 것으로 대체 할 수 있습니다.
private string RemoveJunkChars(string input)
{
return HttpUtility.HtmlEncode(input.Replace("”", "\"").Replace("“", "\""));
}