2012-01-02 46 views
4

我有特殊字符的字符串是這樣的:逃生C#字符串到HTML

äöüß&

現在我希望把他們的HTML文檔中,並需要轉義這些字符。有沒有一個優雅的方式做到這一點?

我可以這樣做:

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

但我並不想這樣做,對所有可能的特殊字符。

回答

13

爲什麼不讓框架爲您做好工作?

你可以嘗試HtmlEncode

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

什麼命名空間是什麼? – 2012-01-02 19:26:16

+0

@juergend - 檢查我鏈接到的文件。具有名稱空間和程序集(以防需要添加引用)。 – 2012-01-02 19:26:47

+4

我一開始並沒有看到。實際上,即使在使用'System.Web'命名空間並在我的Project中引用System.Web.dll之後,VS2010仍然無法找到Server類。但它發現這個工作完美:'HttpUtility.HtmlEncode' – 2012-01-02 19:43:56

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 – 2013-05-15 18:19:36