URLデコードする - C#

C#でURLデコードするコードを紹介します。

概要

URLデコードをする場合は、HttpUtility クラスの UrlDecodeメソッドを利用します。
ヒント
URLエンコードについてはこちらの記事を参照してください。

書式

HttpUtility.UrlDecode( [変換する文字列] )
変換結果は、UrlDecode メソッドの戻り値として返ります。

プログラム例

UI

下図のフォームを作成します。テキストボックスを2つ、ボタンを1つ配置します。

コード

下記コードを記述します。ButtonのClickイベントを実装しています。
補足
コードを記述しただけでは、System.Web アセンブリのクラスを参照できない場合があります。 Windows FormアプリケーションでSystem.Web アセンブリを追加する手順はこちらの記事を参照して下さい。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Web;

namespace URLDecodeDemo
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      textBox2.Text = HttpUtility.UrlDecode(textBox1.Text);
    }
  }
}

解説

ボタンをクリックすると、以下のコードを実行します。上部のテキストボックスに入力された値をURLエンコードして、下部のテキストボックスに変換結果を表示します。
textBox2.Text = HttpUtility.UrlDecode(textBox1.Text);

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。


上部のテキストボックスにURLエンコードされた文字列を入力します。


[button1]をクリックします。上部のテキストボックスに入力した文字がURLデコードされ、結果が下部のテキストボックスに表示されます。


C#でURLのエンコードが実行できました。

補足:エンコーディングを指定する場合

上記のコードでのURLデコードはマルチバイト文字列はUTF-8でエンコードされた文字列としてデコードします。 そのため、Shift-JISでURLエンコードした文字列を入力した場合は正しくでコードできません。
下図はShift-JISでURLエンコードされた文字列をでコードした結果です。


エンコーディングを指定して、URLでコードをする場合は、UrlDecode メソッドの第二引数に利用するエンコーディングの System.Text.Encoding クラスを与えます。
Shift-JISででコードする場合は次のコードになります。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Web;

namespace URLDecodeDemo
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      textBox2.Text = HttpUtility.UrlDecode(textBox1.Text, System.Text.Encoding.GetEncoding("Shift-JIS"));
    }
  }
}

Shift-JISでURLエンコードされた文字列を入力して[button1]をクリックします。正しくデコードできることが確認できます。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2022-05-14
iPentec all rights reserverd.