C# HttpUtility.HtmlEncode和HttpUtility.UrlEncode对哪些字符进行编码?

C# HttpUtility.HtmlEncode和HttpUtility.UrlEncode对哪些字符进行编码?,c#,C#,HttpUtility.HtmlEncode和HttpUtility.UrlEncode对哪些字符进行编码?文档似乎并没有提到编码的确切字符。下面的单元测试提供了部分答案。然而,我真正想要的是UrlEncode——见最后一个测试。希望这对别人有帮助 public class HtmlDecodeTest { ////https://perishablepress.com/stop-using-unsafe-characters-in-urls/ //char[] chars =

HttpUtility.HtmlEncode和HttpUtility.UrlEncode对哪些字符进行编码?文档似乎并没有提到编码的确切字符。

下面的单元测试提供了部分答案。然而,我真正想要的是UrlEncode——见最后一个测试。希望这对别人有帮助

public class HtmlDecodeTest
{
    ////https://perishablepress.com/stop-using-unsafe-characters-in-urls/
    //char[] chars = { ';', '/', '?', ':', '@', '=', '&', '<', '>', '#', '%', '{', '}', '|', '\\', '^', '~', '[', ']', '`', ' ' };

    [Fact]
    public void NotEncodedTest()
    {
        var msg = ";,/,?,:,@,=,#,%,{,},|.\\,^,~,[,],` ";
        var encoded = HttpUtility.HtmlEncode(msg);
        Assert.Equal(msg, encoded);
        var decoded = HttpUtility.HtmlDecode(encoded);
        Assert.Equal(msg, decoded);
    }

    [Fact]
    public void EncodedTest()
    {
        var msg = "<,>,&";
        var encoded = HttpUtility.HtmlEncode(msg);
        Assert.Equal("&lt;,&gt;,&amp;", encoded);
        var decoded = HttpUtility.HtmlDecode(encoded);
        Assert.Equal(msg, decoded);
    }

    [Fact]
    public void UrlEncodedTest()
    {
        var msg = "<>&/?:@=#%{}|\\^~[]` end";
        var encoded = HttpUtility.UrlEncode(msg);

        char[] invalidChars = { ';', '/', '?', ':', '@', '=', '&', '<', '>', '#', '{',
                         '}', '|', '\\', '^', '~', '[', ']', '`', ' ' };
        Assert.True(encoded.IndexOfAny(invalidChars) == -1);

        Assert.Equal("%3c%3e%26%2f%3f%3a%40%3d%23%25%7b%7d%7c%5c%5e%7e%5b%5d%60+end", encoded);
        var decoded = HttpUtility.UrlDecode(encoded);
        Assert.Equal(msg, decoded);
    }
}

它编码的不止这些。例如,它编码下面的单元测试提供了答案-该测试并没有覆盖所有字符。最好能得到这些方法编码的所有字符的最终列表。这就是Microsoft文档中应该包含的内容。