C#/.NET应用程序编程开发中如何判断一个字符串已经被HttpUtility.UrlEncode编码?

C#开发 作者: Rector 13 次阅读 · 读完约需 1 分钟 1 收藏 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

C#/.NET应用程序编程开发中,现有一个URL字符串var url = "https://www.baidu.com/";HttpUtility.UrlEncode()方法编码过了,编码后的字符串如下:

https%3a%2f%2fwww.baidu.com%2f

假定被编码后的字符串变量名为result,即:

var url = "https://www.baidu.com/";
var result = HttpUtility.UrlEncode(url);

在下次再使用此字符串之前,如何判断result已被编码过?

方案一

将编码后的字符串进行解码,再与其对比,如果不一致,说明已被编码,否则未被编码,C#实现代码如下:

private static bool IsEncoded(string text)
{
    var decodedUrl = HttpUtility.UrlDecode(text);
    return !text.Equals(decodedUrl,StringComparison.OrdinalIgnoreCase);
}

或者

private static bool IsEncodedUrl(string val)
{
    string decodedText = HttpUtility.UrlDecode(val);
    string encodedText = HttpUtility.UrlEncode(decodedText);

    return encodedText.Equals(val, StringComparison.OrdinalIgnoreCase);

}

完整示例:

using System;
using System.IO;
using System.Web;
using System.Xml;
using System.Xml.Serialization;

namespace ConsoleApp2
{
    class Program
    {
        public static void Main()
        {

            var url = "https://www.baidu.com/";
            var result = HttpUtility.UrlEncode(url);
            Console.WriteLine(result);
            if (!IsEncoded(result))
            {
                Console.WriteLine("未被编码");
            }
            else
            {
                Console.WriteLine("已被编码");
            }
            if (!IsEncoded(url))
            {
                Console.WriteLine("未被编码");
            }
            else
            {
                Console.WriteLine("已被编码");
            }

            if (!IsEncodedUrl(result))
            {
                Console.WriteLine("未被编码");
            }
            else
            {
                Console.WriteLine("已被编码");
            }
            if (!IsEncodedUrl(url))
            {
                Console.WriteLine("未被编码");
            }
            else
            {
                Console.WriteLine("已被编码");
            }

            Console.ReadLine();
        }

        private static bool IsEncoded(string text)
        {
            var decodedUrl = HttpUtility.UrlDecode(text);
            return !text.Equals(decodedUrl,StringComparison.OrdinalIgnoreCase);
        }

        private static bool IsEncodedUrl(string val)
        {
            string decodedText = HttpUtility.UrlDecode(val);
            string encodedText = HttpUtility.UrlEncode(decodedText);

            return encodedText.Equals(val, StringComparison.OrdinalIgnoreCase);

        }
    }
}

阅读了该文章的人还浏览了...

本文永久链接码友网 » C#/.NET应用程序编程开发中如何判断一个字符串已经被HttpUtility.UrlEncode编码?

发布于: 2019-07-18 11:58:50
分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册