根据RFC 3986的路径分量的有效字符是:Url路径编码,实际工作?
a-z A-Z 0-9 . - _ ~ ! $ & ' () * + , ; = : @
以及百分比编码字符,当然,斜线/
。
但我可以找不到一个类,根据上述规则将字符串转换为格式良好的路径。
string rawPath = "/A9_([email protected]*)/# ?/";
string expectedPath = "/A9_([email protected]*)/%23%20%3f";
然而,看到下面的代码:
string rawPath = "/A9_([email protected]*)/# ?/";
Uri.EscapeDataString(rawPath); //Output=>%2FA9_%28%2B%40%2A%29%2F%23%20%3F%2F
Uri.EscapeUriString(rawPath); //Ouput=>/A9_([email protected]*)/#%20?/
HttpUtility.UrlPathEncode(rawPath); //Ouput=>/A9_([email protected]*)/#%20?/
没有我试图让叶字符转义和属性格式转义所有其它字符。
希望有人能救我从写我自己的实用工具!
你只是想格式化是一种特定的方式或网址不工作? –
也许没有人传入'#'或'?'作为路径的一部分,希望你逃避它;他们希望你把它们当作分隔符。对此没有预先熟练的方法并不令人惊讶 - 理智的做法是不允许包含'#'或'?'的路径作为字符,而不管它们是否可以通过。 (我不希望很多Web服务器也能正确处理这种情况,但这是另一个问题。) –