C# HttpUtility.HtmlEncode和HttpUtility.UrlEncode对哪些字符进行编码?
HttpUtility.HtmlEncode和HttpUtility.UrlEncode对哪些字符进行编码?文档似乎并没有提到编码的确切字符。下面的单元测试提供了部分答案。然而,我真正想要的是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 =
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("<,>,&", 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文档中应该包含的内容。