Base64は、マルチバイト文字列や、画像などのバイナリ・データをテキスト形式に変換する手法の1つで、メールの送信などで多く用いられる。
.NET Framework上でBase64を利用するにはConvertクラス(System名前空間)が使えるが、この際に日本語などのマルチバイト文字列を正しく扱うには、UTF-8やShift-JISといった文字コードを考慮しなければならない。
そこで次のようなクラスを作っておくと、Base64の処理が簡単に行える。
using System;
using System.Text;
public class MyBase64str
{
private Encoding enc;
public MyBase64str(string encStr)
{
enc = Encoding.GetEncoding(encStr);
}
public string Encode(string str)
{
return Convert.ToBase64String(enc.GetBytes(str));
}
public string Decode(string str)
{
return enc.GetString(Convert.FromBase64String(str));
}
}
Imports System
Imports System.Text
Public Class MyBase64str
Private enc As Encoding
Public Sub New(ByVal encStr As String)
enc = Encoding.GetEncoding(encStr)
End Sub
Public Function Encode(ByVal str As String) As String
Return Convert.ToBase64String(enc.GetBytes(str))
End Function
Public Function Decode(ByVal str As String) As String
Return enc.GetString(Convert.FromBase64String(str))
End Function
End Class
このクラスを利用する場合は、コンストラクタにエンコードを表す文字列を指定しておき、Encodeメソッド、DecodeメソッドでBase64のエンコード/デコード処理を行う。具体的には次のようなコードになる。
MyBase64str base64 = new MyBase64str("UTF-8");
string cnvStr = base64.Encode("Hello World こんにちは");
string rstStr = base64.Decode( cnvStr );
Console.WriteLine("Encoded:" + cnvStr);
Console.WriteLine("Restore:" + rstStr);
// 出力:
// Encoded:SGVsbG8gV29ybGQg44GT44KT44Gr44Gh44Gv
// Restore:Hello World こんにちは
Dim base64 As New MyBase64str("UTF-8")
Dim cnvStr As String = base64.Encode("Hello World こんにちは")
Dim rstStr As String = base64.Decode(cnvStr)
Console.WriteLine("Encoded:" + cnvStr)
Console.WriteLine("Restore:" + rstStr)
' 出力:
' Encoded:SGVsbG8gV29ybGQg44GT44KT44Gr44Gh44Gv
' Restore:Hello World こんにちは
短いコードなので、コード・スニペットやツールボックスなどに登録しておくと便利だ。
エンコーディングとして指定できる文字列は、「shift-jis」(「shift_jis」でも可能)「euc-jp」「iso-2022-jp」「UTF-8」などである。この詳細については「TIPS:Encodingクラスで扱えるエンコーディング名は?」参照してほしい。
カテゴリ:クラス・ライブラリ 処理対象:文字列
使用ライブラリ:Convertクラス(System名前空間)
関連TIPS:Encodingクラスで扱えるエンコーディング名は?
Copyright© Digital Advantage Corp. All Rights Reserved.