Url路径编码是有效的

本文关键字:有效 编码 路径 Url | 更新日期: 2023-09-27 18:18:11

根据RFC 3986,路径组件的有效字符是:

a-z A-Z 0-9 . - _ ~ ! $ & ' ( ) * + , ; = : @

以及百分比编码的字符,当然还有斜杠/

但是,我找不到一个类可以根据上述规则将字符串转换为格式良好的路径。

string rawPath = "/A9_(+@*)/# ?/";
string expectedPath = "/A9_(+@*)/%23%20%3f";

但是,参见下面的代码:

string rawPath = "/A9_(+@*)/# ?/";
Uri.EscapeDataString(rawPath); //Output=>%2FA9_%28%2B%40%2A%29%2F%23%20%3F%2F
Uri.EscapeUriString(rawPath); //Ouput=>/A9_(+@*)/#%20?/
HttpUtility.UrlPathEncode(rawPath); //Ouput=>/A9_(+@*)/#%20?/

我没有尝试过任何允许的字符未转义和属性转义所有其他字符。

希望有人能把我从不得不写我自己的实用程序!

Url路径编码是有效的

这些都提供了基于URI创建中的各种规则的预期编码。这是因为包含了保留字符(参见RFC 3968的2.2节),其中包括?#,它们是标准定义的分隔符。这些不会被转义,因为它们是语言定义的一部分。