ASP.NET において URL のエンコードとデコードを行うサンプルを掲載しています。
スポンサーリンク
Server.UrlEncode メソッドや HttpUtility.UrlEncode メソッドを使用するして URL のエンコードやデコードを行うサンプルになります。なお、ASP.NET に限らず Windows アプリケーションでも、System.Web.dll の参照設定を追加することで HttpUtility クラスを使用することができます。
VB.NET
Dim str As String = "://?&+' あいう" ' URL エンコード(デコード)を行う文字 ' URL エンコードする Dim encodeStr As String = System.Web.HttpUtility.UrlEncode(str) Console.WriteLine(encodeStr) ' 出力(エンコード) ' %3a%2f%2f%3f%26%2b'+%e3%81%82%e3%81%84%e3%81%86 ' URL デコードする Dim decodeStr As String = System.Web.HttpUtility.UrlDecode(encodeStr) Console.WriteLine(decodeStr) ' 出力(デコード) ' ://?&+' あいう
C#
string str = "://?&+' あいう"; // URL エンコード(デコード)を行う文字 // URL エンコードする string encodeStr = System.Web.HttpUtility.UrlEncode(str); Console.WriteLine(encodeStr); // 出力(エンコード) // %3a%2f%2f%3f%26%2b'+%e3%81%82%e3%81%84%e3%81%86 // URL デコードする string decodeStr = System.Web.HttpUtility.UrlDecode(encodeStr); Console.WriteLine(decodeStr); // 出力(デコード) // ://?&+' あいう
ASP.NET4 からはシングルクォーテーションもエンコード、デコード対象
ASP.NET4 ( .Net Framework4.0 ) からは、シングルクォーテーションもエンコードやデコードの対象文字として追加されました。未検証ですが、シングルコーテーション ( ‘ ) は、「 %27 」 に変換されるはずです。
C#
string str = "://?&+' あいう"; // URL エンコード(デコード)を行う文字 // URL エンコードする string encodeStr = System.Web.HttpUtility.UrlEncode(str); Console.WriteLine(encodeStr); // 出力(エンコード) // %3a%2f%2f%3f%26%2b%27+%e3%81%82%e3%81%84%e3%81%86
Uri.EscapeDataString, Uri.EscapeUriString, Uri.UnescapeDataString
Uri.EscapeDataString または Uri.EscapeUriString で URL のエンコードを、Uri.UnescapeDataString で URL のデコードを行うこともできます。
これらの関数は ASP.NET4 ( .NetFramework4 ) でも、シングルコーテーション ( ‘ ) を「 %27 」 にはエンコードしません。HttpUtility.UrlDecode / UrlEncode とは動作が異なります。
VB.NET
Dim str As String = "://?& +'" ' URL エンコード(デコード)を行う文字 ' URL エンコードする(URL 用制御文字も含めて URL エンコードする) Dim encodeDataStr As String = Uri.EscapeDataString(str) Console.WriteLine(encodeDataStr) ' 出力(エンコード) ' %3A%2F%2F%3F%26%20%2B' ' URL エンコードする(URL 用制御文字を除き URL エンコードする) Dim encodeUriStr As String = Uri.EscapeUriString(str) Console.WriteLine(encodeUriStr) ' 出力(エンコード) ' ://?&%20+' ' URL デコードする Dim decodeStr As String decodeStr = Uri.UnescapeDataString(encodeDataStr) Console.WriteLine(decodeStr) ' 出力(デコード) ' ://?& +' ' URL デコードする decodeStr = Uri.UnescapeDataString(encodeUriStr) Console.WriteLine(decodeStr) ' 出力(デコード) ' ://?& +'
C#
string str = "://?& +'"; // URL エンコード(デコード)を行う文字 // URL エンコードする(URL 用制御文字も含めて URL エンコードする) string encodeDataStr = Uri.EscapeDataString(str); Console.WriteLine(encodeDataStr); // 出力(エンコード) // %3A%2F%2F%3F%26%20%2B' // URL エンコードする(URL 用制御文字を除き URL エンコードする) string encodeUriStr = Uri.EscapeUriString(str); Console.WriteLine(encodeUriStr); // 出力(エンコード) // ://?&%20+' // URL デコードする string decodeStr; decodeStr = Uri.UnescapeDataString(encodeDataStr); Console.WriteLine(decodeStr); // 出力(デコード) // ://?& +' // URL デコードする decodeStr = Uri.UnescapeDataString(encodeUriStr); Console.WriteLine(decodeStr); // 出力(デコード) // ://?& +'