C# | UrlEncode與UrlDecode使用上差異


下方程式碼使用linqpad測試,
可以發現根據使用的method不同,
Encode後的文字是有些不一樣的,但都可用UrlDecode解開,
但產生的結果也不同,新手使用上務必小心。


如果用linqpad 測試要先加參考的dll
可以參考這篇:
http://www.cnblogs.com/StreamInsight/archive/2011/07/05/5-Quick-Steps-for-Trying-Out-StreamInsight-with-LINQPad.html


void Main()
{
string coded = "";
string test = "<order> 中文 This is a value 中文 123 </order>";
      
      //方法1
coded = System.Web.HttpUtility.UrlEncode(test).Dump();
System.Web.HttpUtility.UrlDecode(coded).Dump();
      
      //方法2
coded = System.Uri.EscapeDataString(test).Dump();
System.Uri.UnescapeDataString(coded).Dump();
System.Web.HttpUtility.UrlDecode(coded).Dump();
      
      //方法3
coded = System.Uri.EscapeUriString(test).Dump();
System.Uri.UnescapeDataString(coded).Dump();
System.Web.HttpUtility.UrlDecode(coded).Dump();
}

      //結果
      //方法1
%3corder%3e+%e4%b8%ad%e6%96%87+This+is+a+value+%e4%b8%ad%e6%96%87+123+%3c%2forder%3e
<order> 中文 This is a value 中文 123 </order>
      
      //方法2
%3Corder%3E%20%E4%B8%AD%E6%96%87%20This%20is%20a%20value%20%E4%B8%AD%E6%96%87%20123%20%3C%2Forder%3E
<order> 中文 This is a value 中文 123 </order>
<order> 中文 This is a value 中文 123 </order>
      
      //方法3
%3Corder%3E%20%E4%B8%AD%E6%96%87%20This%20is%20a%20value%20%E4%B8%AD%E6%96%87%20123%20%3C/order%3E
<order> 中文 This is a value 中文 123 </order>
<order> 中文 This is a value 中文 123 </order>




留言