Base64 を CSV にデコードする方法
- 入力 · Base64 に Base64 を貼り付けます。ページを開いた時点で短いサンプルが読み込まれています。
- 出力 · テキスト で行を確認します。区切り文字、引用符、アクセント付きの文字がおかしければ、ほかの場所でファイルを開く前に気づけます。
- 文字が
�で表示される場合は、文字コード をエクスポートのエンコーディングに合わせます。古い Windows ソフトのファイルなら Windows-1252 のことがよくあります。 - ダウンロード を押します。デコードしたデータがカンマ区切りの行に見える場合、ステータス行は CSV と表示し、ファイルは
decoded.csvとして保存されます。短いファイルや、セミコロンやタブで区切られたファイルはテキストと判定され、decoded.txtとして保存されるので、拡張子を.csvに変えてください。
プレビュー用にどの文字コードを選んでいても、ダウンロードではデコードしたバイト列がそのまま書き出されます。
例
サンプルの aWQsbmFtZSxlbWFpbAoxLEFkYSxhZGFAZXhhbXBsZS5jb20KMixMaW51cyxsaW51c0BleGFtcGxlLmNvbQo= をデコードすると次のようになります。
id,name,email
1,Ada,ada@example.com
2,Linus,linus@example.com
先頭に注目してください。aWQs は id, です。CSV のエクスポートには、ファイル形式のような共通の接頭辞はありませんが、いくつかのパターンが手がかりになります。
| Base64 の先頭 | 意味 |
|---|---|
77u/ | UTF-8 のバイトオーダーマーク。Excel の「CSV UTF-8」エクスポートによく見られます |
//4 | UTF-16LE のバイトオーダーマーク。「Unicode テキスト」エクスポート(タブ区切り)によく見られます |
UEsDB | ZIP コンテナ:CSV ではなく XLSX ブック |
H4sI | gzip 圧縮データ。gzip Base64 デコーダー でデコードしてください |
Base64 の CSV ファイルはどこから来るのか
レポートや分析の API は、JSON に生のファイルのバイト列を入れられないため、エクスポートを JSON レスポンス内の Base64 フィールドとして返すことがよくあります。Webhook やメッセージキューも添付ファイルを同じように扱い、自動送信メールは CSV の添付を MIME の Base64 パートとして運びます。生のメッセージからは メールデコーダー で取り出せます。Git ホスティングの API はファイルの内容を改行入りの Base64 で返しますが、このデコーダーは改行を無視します。
JSON レスポンスにエンコードされたフィールドが複数ある場合は、JSON 内の Base64 をデコード で一度にすべて見つけられます。
デコードしたファイルを Excel で開く
CSV には文字コードを宣言するヘッダーがないため、表計算ソフトは推測で読み込みます。
- UTF-8 の BOM 付き(Base64 が
77u/で始まる)なら、ファイルをダブルクリックしても Excel はアクセント付きの文字やラテン文字以外の文字を正しく読みます。77u/aWQ7bmFtZTtjaXR5CjE7Wm/DqztLw7Zsbgo=がそうしたファイルで、ZoëとKölnが正しく表示されます。 - BOM なし の場合、Windows の Excel はシステムの従来のコードページを使い、UTF-8 のテキストは
Zoëのように化けます。ダブルクリックせずに「データ」→「テキストまたは CSV から」を使い、UTF-8 を選んでください。 - カンマの代わりにセミコロン で区切られたファイルは、カンマを小数点に使う国では普通です。Excel がこうしたファイルを正しく開けるのは、システムのリスト区切り文字がセミコロンの場合だけです。そうでなければ、取り込みのダイアログで区切り文字を指定してください。
コードで Base64 を CSV に変換する
import base64, csv, io
s = "aWQsbmFtZSxlbWFpbAoxLEFkYSxhZGFAZXhhbXBsZS5jb20KMixMaW51cyxsaW51c0BleGFtcGxlLmNvbQo="
raw = base64.b64decode(s)
with open("export.csv", "wb") as f:
f.write(raw)
rows = list(csv.reader(io.StringIO(raw.decode("utf-8-sig"))))
rows[1] # ['1', 'Ada', 'ada@example.com']
utf-8-sig は BOM があれば取り除き、なければ何もしません。コマンドラインでは、base64 -d export.b64 > export.csv がダウンロードボタンと同じ処理をします。大きなファイルをストリーミングで扱う方法は Python での Base64 を参照してください。
よくある質問
Base64 を CSV ファイルに変換するには?
上に Base64 を貼り付けて ダウンロード を押してください。ツールが行を CSV と認識すれば decoded.csv として保存されます。そうでなければ decoded.txt になりますが、内容はそのままで拡張子を .csv に変えられます。
Excel で CSV を開くと、アクセント付きの文字や日本語が文字化けするのはなぜですか?
Windows の Excel は、バイトオーダーマーク(BOM)のない CSV ファイルを従来のコードページで読もうとするからです。「データ」→「テキストまたは CSV から」でファイルを取り込んで UTF-8(65001)を選ぶか、BOM で始まる「CSV UTF-8」形式で送ってもらってください。
Base64 が UEsDB で始まっています。これは CSV ですか?
いいえ。これは ZIP コンテナで、XLSX ブックか ZIP 圧縮されたエクスポートです。スプレッドシートなら Base64 を Excel に変換 を、アーカイブなら Base64 を ZIP に変換 を使ってください。
サイズの上限はありますか?
固定の上限はありません。デコードはブラウザ内で行うので、非常に大きなエクスポートは端末のメモリ次第です。数 GB のファイルなら、コマンドラインの base64 -d のほうが実用的です。