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

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

概要

Base64でエンコードするにはConvertクラスのToBase64String()メソッドを用います。ポイントは、Base64のエンコードをする前に文字コードをJISやSJIS,EUCに変換する必要がある点です。
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_Encode_Click(object sender, EventArgs e)
    {
      string input = textBox_Input.Text;

      Encoding enc = Encoding.GetEncoding(50220);
      //Encoding enc = Encoding.GetEncoding("iso-2022-jp");
      
      byte[] encstr = enc.GetBytes(input);
      string base64str = Convert.ToBase64String(encstr);

      textBox_Output.Text = base64str;
    }
  }
}

解説

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

Base64でエンコードする前に入力文字列の文字コードをUTF-8から変換する必要があります。一般的にはJIS(iso-2022-jp)に変換することが多いです。上記のコードでJISのEncodingクラスを取得します。
Encoding enc = Encoding.GetEncoding(50220);
//Encoding enc = Encoding.GetEncoding("iso-2022-jp");

以下のコードで入力文字列の文字コードをJISに変換します。
byte[] encstr = enc.GetBytes(input);

以下のコードで文字コードをJISに変換した文字列をBase64でエンコードします。
string base64str = Convert.ToBase64String(encstr);

エンコードした文字列を出力用のテキストボックスに表示します。
textBox_Output.Text = base64str;

実行結果

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


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