文字列をBase64でデコードする - C#

文字列をBase64でデコードするコードを紹介します。

概要

Base64のデコードにはConvertクラスのFromBase64String()メソッドを用います。UnicodeでBase64エンコードされているケースは少ないため、デコード後に文字コードの変換をします。
Base64 エンコード・デコード Webアプリ
Base64 エンコード、デコード処理の Webアプリはこちらです。

プログラム

UI

下図のUIを作成します。TextBox2つとButtonを2つ配置します。

コード

以下のコードを記述します。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

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

    private void button_Decode_Click(object sender, EventArgs e)
    {
      string input = textBox_Input.Text;
      byte[] decbytes = Convert.FromBase64String(input);

      Encoding enc = Encoding.GetEncoding(50220);
      //Encoding enc = Encoding.GetEncoding("iso-2022-jp");

      string orgStr = enc.GetString(decbytes);

      textBox_Output.Text = orgStr;
    }
  }
}

解説

下記のコードで入力用のテキストボックスに入力された文字列を変数に代入します。
string input = textBox_Input.Text;

文字列をBase64でデコードします。
byte[] decbytes = Convert.FromBase64String(input);

Base64デコード後の文字列の文字コードをJISからUnicodeに変換します。JISから変換するためのEncodingクラスを取得します。
Encoding enc = Encoding.GetEncoding(50220);
//Encoding enc = Encoding.GetEncoding("iso-2022-jp");

以下のコードで文字コードをJISからUnicodeに変換します。
string orgStr = enc.GetString(decbytes);

変換した文字列を出力用のテキストボックスに表示します。
textBox_Output.Text = orgStr;

実行結果

入力用のテキストボックスにBase64エンコードされた文字列を入力し、[Decode]ボタンを押すとデコード結果が出力用のテキストボックスに表示されます。


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