根据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?/
我尝试过的任何东西都不允许使用未转义的角色,而且所有其他角色都会逃脱。
希望有人可以让我免于编写自己的实用程序!
答案 0 :(得分:1)
这些中的每一个都基于URI创建中的各种规则提供预期的编码。这是因为包含了保留字符(参见RFC 3968的2.2节),其中包括?
和#
,它们是标准定义的分隔符。这些不会被转义,因为它们是语言定义的一部分。