2012-03-01 95 views

回答

3

此鏈接可以幫助你...... http://dhanushkaat.blogspot.in/2012/01/only-encode-url-special-characters-in.html



編輯:我添加以下鏈接的內容:
當涉及到編碼特殊字符通過引用URL,我們可以很容易地使用System.Web.dll程序集內定義的函數。

雖然這是編碼字符串,使其在HTTP上下文兼容的最直接的輕鬆自由的方式,在某些情況下,我們沒有得到這種特權自動(例如非Web應用程序)。

當我從VS 2010開發SQL Server用戶定義函數時遇到了這種情況。 當時的特殊問題是,當您在SQL CLR項目中添加程序集引用時,會從GAC中提取引用在數據庫服務器中。 微軟已經添加了一組程序集,他們已經確定這些程序集是由T-SQL函數引用給GAC的安全程序集,使我們能夠使用這些類中定義的功能。但不幸的是System.Web.dll不是其中之一。

那麼會是什麼工作都是圍繞中,我們可以使用URL編碼的另一個功能可以的System.Uri名字空間,幸運駐留內System.dll中發現裏面。

好吧,那麼如何使用它來只編碼URL特殊字符! 簡單就是使用「正則表達式」的力量。

這是我寫的功能。

private static string EncodeUrl(string toEncode) 
    { 
    const string pattern = "[$&+,/:;[email protected]]"; 
    var match = Regex.Match(toEncode, pattern); 
    while(match.Success) 
    { 
     toEncode = toEncode.Replace(match.Value, Uri.EscapeDataString(match.Value)); 
     match = Regex.Match(toEncode, pattern); 
    } 
    return toEncode; 
    } 

該函數重複檢查傳遞的字符串,直到所有特殊字符被替換爲其各自的編碼值。

Regex.Match的和組合的字符串替換功能確保只有在正則表達式模式中定義的字符被替換。