2012-03-01 105 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的和组合的字符串替换功能确保只有在正则表达式模式中定义的字符被替换。