Web里URL空格的轉(zhuǎn)換方法
看URL是HttpUtility.UrlEncode將空格轉(zhuǎn)換成了“+”號,原因找到就著手解決Bug。
引用:
fileName = HttpUtility.UrlEncode(fileName, Encoding.UTF8);
fileName = fileName.Replace("+", "%20");
通過Replace替換解決,雖然問題解決了,但這并不是一個很好的方法,如果文件夾或文件名中包含“+”號則會導致另外的Bug發(fā)生。
最佳解決方案:
使用HttpUtility.UrlPathEncode,UrlPathEncode 方法執(zhí)行下列步驟:
1.將 UrlPathEncode 方法的編碼邏輯只應用于 URL 的路徑部分(不包括查詢字符串)。 該方法假定 URL 被編碼為 UTF-8 字符串。
2.對非空格編碼,以便在所得的編碼字符串中使用前 128 個 ASCII 字符的子集。 Unicode 的所有字符值為 128 及更高,或者 32 和更小, URL 中輸入。
3.輸入空格作為 %20。
使用 UrlEncode 方法或 UrlPathEncode 方法,可以輸入 URL。 但是,方法返回不同的結(jié)果。 UrlEncode 方法將每個空格字符轉(zhuǎn)換為加號 (+) 字符。 UrlPathEncode 方法將每個空格字符轉(zhuǎn)換為字符串 %20,以十六進制表示法表示的一個空格。 在對 URL 的路徑部分編碼時使用 UrlPathEncode 方法,以保證一致的已解碼 URL,與執(zhí)行解碼的平臺或瀏覽器無關。 當您使用 UrlPathEncode 方法時,查詢字符串值不會輸入。 因此,可通過問號的任何值 (?) 在字符串,將不會輸入。 如果必須通過 URL,當查詢字符串,則使用 UrlEncode 方法。
看到項目中很多頁面都使用了Replace方式,查詢后全部替換為UrlPathEncode減少更多Bug的發(fā)生。
相關文章
ASP.NET在IE10中無法判斷用戶已登入及Session丟失問題解決方法
IE10中Session丟失問題引起眾多業(yè)內(nèi)人士的關注,今天發(fā)現(xiàn)在IE10中登錄網(wǎng)站時,使用表單驗證機制(FormsAuthentication)卻無法判斷該用戶已登入,保存的Session總會丟失,本文將介紹解決方法,感興趣的朋友可以參考下,或許對你有所幫助2013-02-02
Community Server專題一:概述Community Server
Community Server專題一:概述Community Server...2007-03-03
asp.net 數(shù)據(jù)綁定時對數(shù)據(jù)列做個性化處理
asp.net 數(shù)據(jù)綁定時對數(shù)據(jù)列做個性化處理,需要的朋友可以參考下。2011-12-12
c#設置xml內(nèi)容不換行及屬性xsi:nil=true的空節(jié)點添加
c#設置xml內(nèi)容不換行:添加屬性為xsi:nil=true的空節(jié)點便可實現(xiàn),感興趣的你可以參考下本文,或許有意想不到的收獲2013-03-03

