使用HtmlDecode或Escape解码字符串

时间:2013-11-07 14:56:21

标签: c# xml xml-serialization xml-deserialization

编辑 - 根据答案修改:

好的,这是我根据答案修改的内容:

这是字符串。

"November is Fruit's Fresh."    

这就是我正在做的事情:

    static string EscapeCharacters(string txt)
    {
        string encodedTxt = HttpUtility.HtmlEncode(txt);
        return HttpUtility.HtmlDecode(encodedTxt);
    }

    string _decodedTxt = EscapeCharacters("November is Fruit's Fresh.");

当它返回时,我仍然得到相同的文字November is Fruit's Fresh.

结束编辑

我尝试使用HttpUtility.HtmlDecode中的System.Web并尝试使用SecurityElement.Escape,但它没有正确转义。

所以我最终编写了我自己的替换方法:

    static string EscapeXMLCharacters(string txt)
    {
        string _txt = txt.Replace("&amp;", "&").Replace("&lt;", "<").Replace("&gt;", ">").Replace("&quot;", "\"").Replace("&apos;", "'").Replace("&#38;", "&").Replace("&#60;", "<").Replace("&#62;", ">").Replace("&#34;", "\\").Replace("&#39;", "'");
        return _txt;
    }

它确实适用于我的情况,但很难涵盖所有内容,在我的情况下,我有一些欧洲字符,如í``(&#237;)é (&#233;)

是否有内置.Net的实用工具方法可以处理任何特殊字符?

2 个答案:

答案 0 :(得分:0)

您可以使用HtmlEncode对字符串进行编码,然后您可以使用HtmlDecode返回原始值:

string x = "éí&";
string encoded = System.Web.HttpUtility.HtmlEncode(x);
Console.WriteLine(encoded);  //&#233;&#237;&amp;

string decoded = System.Web.HttpUtility.HtmlDecode(encoded);
Console.WriteLine(decoded);  //éí&

通过更新,您只需解码字符串:

String decoded = System.Web.HttpUtility.HtmlDecode("November is Fruit&#39;s Fresh.");
Console.WriteLine(decoded);   //November is Fruit's Fresh.

答案 1 :(得分:0)

tagText = SecurityElement.Escape(tagText);

http://msdn.microsoft.com/en-us/library/system.security.securityelement.escape.aspx

 System.Net.WebUtility.HtmlDecode(textContent);