根據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服務器也能正確處理這種情況,但這是另一個問題。) –