首页 / C#开发 / 正文

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

5690 2 发布于: 2019-07-18 读完约需7分钟

问题描述

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应用程序编程开发中如何使用内存流(MemoryStream)操作文件(读取或者保存文件)?

下一篇: C#/.NET应用程序编程开发中多线程ThreadStart如何传递参数?

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

分享扩散:

发表评论

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