c#

c# urlencode怎样避免双重编码

小樊
81
2024-12-04 07:33:50
栏目: 编程语言

在C#中,使用System.Net.WebUtility.UrlEncode方法进行URL编码时,如果需要避免双重编码,可以先检查字符串是否已经编码过。可以使用System.Uri.IsHexDigit方法来检查字符串中的每个字符是否为十六进制数字,从而判断字符串是否已经被编码。以下是一个示例:

using System;
using System.Net.WebUtility;

class Program
{
    static void Main()
    {
        string input = "Hello, 世界!";
        string encoded = UrlEncode(input);
        Console.WriteLine("Encoded: " + encoded);

        string decoded = UrlDecode(encoded);
        Console.WriteLine("Decoded: " + decoded);
    }

    static string UrlEncode(string input)
    {
        if (!IsEncoded(input))
        {
            return WebUtility.UrlEncode(input);
        }
        return input;
    }

    static string UrlDecode(string input)
    {
        return WebUtility.UrlDecode(input);
    }

    static bool IsEncoded(string input)
    {
        foreach (char c in input)
        {
            if (!Uri.IsHexDigit(c))
            {
                return false;
            }
        }
        return true;
    }
}

在这个示例中,我们首先定义了一个IsEncoded方法,用于检查字符串是否已经编码。然后,在UrlEncode方法中,我们先调用IsEncoded方法检查字符串是否已经编码,如果没有编码,则调用WebUtility.UrlEncode方法进行编码。这样可以避免对已经编码过的字符串进行双重编码。

0
看了该问题的人还看了