转义和取消转义无效字符

时间:2019-12-12 01:07:15

标签: c# security escaping

这应该很容易。我有一个像下面这样逃脱的字符串:

string originalString = "M&M";
string escapedString = System.Security.SecurityElement.Escape(originalString);//M&M

到目前为止很好

string unEscapedString = System.Security.SecurityElement.FromString(escapedString).Text;

期望回到M&M,但得到“未设置对象”

假定字符串应为xml格式,那么在这种情况下我应做的任何帮助都将有所帮助。

1 个答案:

答案 0 :(得分:5)

您可以使用System.Net.WebUtility类的静态HtmlDecode方法执行此操作:

string original = "M&M";
string escaped = System.Security.SecurityElement.Escape(original);
string unescaped = System.Net.WebUtility.HtmlDecode(escaped);

您的代码无法正常运行的原因是因为FromString方法需要有效的xml。请参阅文档here

  

参数
  xml String
  创建安全元素的XML编码字符串。

如果在字符串周围添加xml标记,则可以使代码示例工作:

string unescaped = SecurityElement.FromString($"<x>{escaped}</x>").Text;