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);
// 出力(デコード)
// ://?& +'