2012-01-02 3 views
4

У меня есть строка со специальными символами, как это:побег C# Строка HTML

äöüß &

Теперь я хочу, чтобы положить, что в HTML-документ и нужно избежать этих символов. Есть ли элегантный способ сделать это?

Я мог бы сделать это:

string html; 
html = html.Replace("ü", "uu¨"); 
html = html.Replace("ß", "ß"); 
.... 

Но я не хочу, чтобы сделать это для всех возможных специальных символов.

ответ

13

Почему бы не позволить Framework работать на вас?

Вы можете попробовать HtmlEncode:

string encodedHtml = Server.HtmlEncode(html); 
+0

Что пространства имен является то, что? –

+0

@juergend - Проверьте документацию, к которой я привязан. Имеет пространство имен и сборку (в случае, если вам нужно добавить ссылку). –

+4

Я этого раньше не видел. Фактически даже после использования пространства имен 'System.Web' и ссылки на System.Web.dll в моем проекте VS2010 все еще не может найти класс Server. Но он находит это, что отлично работает: 'HttpUtility.HtmlEncode' –

1

Я рекомендую получить, чтобы привычку использовать Microsoft's AntiXSS Library и вызова

AntiXSS.HtmlEncode(yourstring); 

, если вам необходимо включить его в тело, или

AntiXSS.HtmlAttributeEncode(yourstring); 

если он находится внутри атрибута html.

8

Существует также это, предназначенный для XML, но она должна хорошо работать с HTML:

System.Security.SecurityElement.Escape(string s);

+1

См. Расширенные примечания (подтверждающие вас) @ http://stackoverflow.com/a/1934252/41153 –