base64エンコーディングまたはデコーディングとは、任意のデータを64種類の文字 0-9,a-z,A-Z,'+','/' (10+26x2+2=64) で表現し直すことまたは表現されたものをもとのデータに戻すことです。上記64種類の文字は7bitで表現可能なASCII文字の範囲内にあるため、電子メールでの通信など、マルチバイト文字やバイナリデータを扱えない環境で使用されることがあります。なお、'='はエンコードおよびデコードにおけるパディングとして使用されます。base64コマンドやRubyのbase64ライブラリを用いてこのエンコードおよびデコードを行うことができます。
$ echo "あいうえお" | base64
gqCCooKkgqaCqA== # Shift_JIS環境での実行例
$ echo "gqCCooKkgqaCqA==" | base64 -d ←macOS の base64 は `-D` です。
あいうえお
#!/usr/bin/ruby
# -*- coding: utf-8 -*-
require 'base64'
utf = "あいうえお"
puts Base64.encode64(utf)
encoded = "44GC44GE44GG44GI44GK"
p Base64.decode64(encoded) # UTF-8でエンコードされた文字列が返る
# (デコード結果であるユニコード文字列ではない)
# UTF-8でエンコードされた文字列をデコードし即座にShift_JISでエンコードしたものを返す
# (Rubyには文字コードに関するdecodeがない)
puts Base64.decode64(encoded).encode('Shift_JIS', 'UTF-8')
$ ruby sample.rb
44GC44GE44GG44GI44GK
"\xE3\x81\x82\xE3\x81\x84\xE3\x81\x86\xE3\x81\x88\xE3\x81\x8A"
あいうえお