C#,.Net Core Escape、Url编码与解码

首次发布:2017-05-05
2019-11-14 更新

不知道大家有没有注意过  字符串保存到数据库里是

这样的一段字符

要引用.net 自带的DLL   Microsoft.JScript

这字符是  Escape编码

        //Escape编码,同js
        public static string Escape(string str)
        {
            return Microsoft.JScript.GlobalObject.escape(str);
        }
        //UnEscape解码,同js
        public static string UnEscape(string str)
        {
            return Microsoft.JScript.GlobalObject.unescape(str);
        }

下面是 .net Core
1.URL 编码解码
string result1 = HttpUtility.UrlEncode("张三丰");
Console.WriteLine(result1); // 
string result2 = HttpUtility.UrlDecode(result1);
Console.WriteLine(result2); // 张三丰
HttpUtility.UrlDecode +号变成了空格,有人看到什么都没有以为消失了
可能编码时用的是 string s1= Microsoft.JScript.GlobalObject.escape("A+B");这个编码时,不会对+号进行编码,然后用HttpUtility.UrlDecode解码时+(加号)就变成了空格,解决办法是 HttpUtility.UrlDecode(s1.Replace("+", "+")),这样就可以了

2.获取URL参数键值对
string path = "name=zhangsan&age=13";
NameValueCollection values = HttpUtility.ParseQueryString(path);
Console.WriteLine(values.Get("name"));// zhangsan
Console.WriteLine(values.Get("age")); // 13
3.HTML 编码解码
string html = "<h1>张三丰</h1>";
string html1 = HttpUtility.HtmlEncode(html);
Console.WriteLine(html1); // &lt;h1&gt;张三丰&lt;/h1&gt;
string html2 = HttpUtility.HtmlDecode(html1);
Console.WriteLine(html2); // <h1>张三丰</h1>