我們在web開發中經常用到url中含有中文字符的需要對其進行字符串編碼和解碼。但是System.Web.HttpUtility.UrlEncode、System.Web.HttpUtility.UrlDecode方法是不會對"+"進行編碼和解碼的。因此,我們需要對這兩個方法進行擴展一下。
/// <summary>
/// 對字符串進行url編碼
/// </summary>
/// <param name="str">待編碼的url</param>
/// <param name="code">字符編碼</param>
/// <returns>編碼後的字符串</returns>
public static string UrlEncode(this string str, Encoding code)
{
if (string.IsNullOrEmpty(str))
return str;
return System.Web.HttpUtility.UrlEncode(str, code).Replace("+", "%2b"); //+號替換成%2b
}
/// <summary>
/// 對字符串進行url解編
/// </summary>
/// <param name="str">待編碼的url</param>
/// <param name="code">字符編碼</param>
/// <returns>解編後的字符串</returns>
public static string UrlDecode(this string str, Encoding code)
{
if (string.IsNullOrEmpty(str))
return str;
return System.Web.HttpUtility.UrlDecode(str, code).Replace("%2b", "+"); //原來是+好的還原
}