[ ASP.NET ] URL のエンコードとデコード ( UrlEncode / UrlDecode )

Pocket

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);

    // 出力(デコード)
    // ://?& +'
参考
スポンサーリンク

Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>