سؤال

تحرير - تم تعديله بناءً على الإجابة:

حسنًا ، هذا ما قمت بتعديله بناءً على الإجابة:

ها هي السلسلة.

"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 التي تأخذ اهتمامًا بأي شخصيات خاصة؟

هل كانت مفيدة؟

المحلول

يمكنك استخدام 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.

نصائح أخرى

tagText = securityelement.escape (tagText) ؛

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

أو

 System.Net.WebUtility.HtmlDecode(textContent);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top