大家都知道這種情況,當在 "baidu.com"中搜尋漢字,比如“老三”得到的url字串為:http://www.baidu.com/s?wd=%C0%CF%C8%FD&cl=3,顯然經過了編碼。這是怎麼回事呢?
因為有些符號在URL中是不能直接傳遞的,如果要在URL中傳遞這些特殊符號,那麼就要使用他們的編碼了。編碼的格式為:%加字元的ASCII碼,即一個百分比符號%,後面跟對應字元的ASCII(16進位)碼值。例如 空格的編碼值是"%20"。
下表中列出了一些URL特殊符號及編碼
| |
|
|
十六進位值 |
| 1. |
+ |
URL 中+號表示空格 |
%2B |
| 2. |
空格 |
URL中的空格可以用+號或者編碼 |
%20 |
| 3. |
/ |
分隔目錄和子目錄 |
%2F |
| 4. |
? |
分隔實際的 URL 和參數 |
%3F |
| 5. |
% |
指定特殊字元 |
%25 |
| 6. |
# |
表示書籤 |
%23 |
| 7. |
& |
URL 中指定的參數間的分隔字元 |
%26 |
| 8. |
= |
URL 中指定參數的值 |
%3D |
那麼我們怎麼編碼和解碼呢?請看下面的代碼:
//首先加入System.Web引用。
/// <summary>
/// URL解碼
/// </summary>
/// <param name="source">待解碼字串</param>
/// <param name="encode">待解碼字串編碼格式</param>
/// <returns>解碼後的字串</returns>
public static string UrlDeCode(string source, Encoding encode)
{
return System.Web.HttpUtility.UrlDecode(source,encode);
}
/// <summary>
/// URL加密
/// </summary>
/// <param name="source">待加密字串</param>
/// <param name="encode">待加密字串編碼格式</param>
/// <returns>加密後的字串</returns>
public static string UrlEnCode(string source, Encoding encode)
{
return System.Web.HttpUtility.UrlEncode(source,encode);
}
老三編碼轉換小工具運行結果: