C# Uri.EscapeDataString 在解码的字符串中添加了不正确的“%25”
本文关键字:不正确 添加 字符串 EscapeDataString Uri 解码 | 更新日期: 2023-09-27 18:31:41
我正在尝试使用Uri.EscapeDataString对网址进行UrlEncode,但结果不正确。下面是一个示例:
string url = "https://mega.co.nz/#!GVZFwAbB!NzdN2jp7A_WmQBLC4RJrCX8SzixFIEo7oZZARaMAmXQ";
string encodedUrl = Uri.EscapeDataString(url);
预期成果将是:
https%3a%2f%2fmega.co.nz%2f%23!GVZFwAbB!NzdN2jp7A_WmQBLC4RJrCX8SzixFIEo7oZZARaMAmXQ
但实际的是一个:
https%253a%252f%252fmega.co.nz%252f%2523%21GVZFwAbB%21NzdN2jp7A_WmQBLC4RJrCX8SzixFIEo7oZZARaMAmXQ
如您所见,有一堆不属于那里的额外%25
。%25
不是"%
"的编码吗?我的原始字符串中没有%
...这是怎么回事?
编辑:我不能为这个项目使用System.Web assembly
,所以不幸的是我不能为此使用HttpUtility.UrlEncode()
方法。
好吧,在搜索了更多之后,似乎这可以完成工作,而无需依赖系统网络:
System.Net.WebUtility.UrlEncode(url);
编码是正确的,没有%25
。
Uri.EscapeDataString
不对URL进行编码。请改用 HttpUtility.UrlEncode。
string url = "https://mega.co.nz/#!GVZFwAbB!NzdN2jp7A_WmQBLC4RJrCX8SzixFIEo7oZZARaMAmXQ";
string encodedUrl = HttpUtility.UrlEncode(url);
结果是:
https%3a%2f%2fmega.co.nz%2f%23!GVZFwAbB!NzdN2jp7A_WmQBLC4RJrCX8SzixFIEo7oZZARaMAmXQ