データの受け渡しやシステム間の連携でよく使われる「CSVファイル」。Excelで開けるのは知っているけど、文字化けして困ったことがある人も多いのではないでしょうか。この記事では、CSVファイルの基本構造から文字化けの原因と対策まで、初心者の方にもわかりやすく解説します。

CSVファイルとは

CSV(シーエスブイ)は「Comma-Separated Values」の略で、日本語では「カンマ区切り値」を意味します。その名のとおり、データをカンマ(,)で区切って並べたテキストファイルです。

CSVの最大の特徴はシンプルさです。特別なソフトウェアがなくても、メモ帳やテキストエディタで中身を確認・編集できます。また、Excel、Googleスプレッドシート、データベース、プログラミング言語など、ほぼすべてのツールで読み書きが可能です。

CSVファイルの拡張子は「.csv」です。見た目は普通のテキストファイルですが、拡張子によってExcelなどの表計算ソフトと関連付けられています。

CSVの基本構造

CSVファイルの構造は非常にシンプルです。

名前,年齢,職業
田中太郎,30,エンジニア
佐藤花子,25,デザイナー
鈴木一郎,35,マネージャー

ルールは以下のとおりです。

  • 各行が1レコード(1件のデータ)
  • カンマで区切られた各値がフィールド(列)
  • 1行目がヘッダー行(列名)になることが多い(必須ではない)

フィールドにカンマや改行が含まれる場合

データ自体にカンマが含まれる場合は、そのフィールドをダブルクォーテーション(")で囲みます。

名前,住所,備考
田中太郎,"東京都渋谷区1-2-3",なし
佐藤花子,"大阪府大阪市中央区4,5,6","備考に、カンマあり"

ダブルクォーテーション自体をデータに含めたい場合は、ダブルクォーテーションを2つ重ねます。

"彼は""天才""と呼ばれた"
→ 実際の値: 彼は"天才"と呼ばれた

区切り文字の種類

CSVは名前のとおりカンマ区切りが標準ですが、実際にはさまざまな区切り文字が使われています。

形式区切り文字拡張子特徴
CSVカンマ(,).csv最も一般的
TSVタブ(\t).tsv / .txtデータにカンマが多い場合に便利
SSVセミコロン(;).csvヨーロッパで多い(小数点にカンマを使うため)
パイプ区切りパイプ(|).txtデータにカンマやタブが含まれる場合

特にヨーロッパの国々では、数値の小数点にカンマを使う(例: 3,14)ため、CSVの区切り文字にセミコロンを使うことが多いです。ファイルを受け取ったときは、実際の区切り文字を確認することが大切です。

文字コード問題(UTF-8とBOM)

CSVファイルで最もトラブルが多いのが文字コードの問題です。日本語を含むCSVファイルを開いたときに文字化けする原因のほとんどは、文字コードの不一致です。

主な文字コード

  • UTF-8 - 現在の世界標準。Webやプログラミングではほぼこれ
  • UTF-8 BOM付き - UTF-8の先頭にBOM(Byte Order Mark)を付けたもの。ExcelでUTF-8を正しく認識させるために使う
  • Shift_JIS(CP932) - 日本語Windows環境のレガシーな文字コード

BOM(Byte Order Mark)とは

BOMはファイルの先頭に付ける見えない3バイトの印(EF BB BF)で、「このファイルはUTF-8ですよ」とソフトウェアに伝える役割があります。

ExcelはBOMなしのUTF-8ファイルをShift_JISと誤認識することがあるため、Excelで開くことを前提としたCSVファイルはUTF-8 BOM付きで保存するのがおすすめです。

Excelでの開き方と文字化け対策

CSVファイルをExcelで開く方法はいくつかあります。文字化けを防ぐための方法を紹介します。

方法1: UTF-8 BOM付きで保存する(推奨)

CSVファイルを作成・出力する側でUTF-8 BOM付きにしておけば、Excelでダブルクリックするだけで正しく開けます。これが最もシンプルな対策です。

方法2: Excelの「データの取得」機能を使う

BOMなしのUTF-8ファイルを開く場合は、以下の手順で文字コードを指定できます。

  1. Excelを開き、「データ」タブをクリック
  2. 「テキストまたはCSVから」を選択
  3. ファイルを選択すると、プレビュー画面が表示される
  4. 「元のファイル」のドロップダウンで「65001: Unicode (UTF-8)」を選択
  5. プレビューで文字化けが解消されていることを確認して「読み込み」

方法3: Shift_JISで保存し直す

どうしてもダブルクリックで開きたい場合は、テキストエディタ(VSCodeなど)でファイルを開き、Shift_JIS(CP932)で保存し直す方法もあります。ただし、Shift_JISでは表現できない文字(一部の絵文字や特殊文字)が失われるリスクがあります。

プログラミングでの読み書き

JavaScript

// CSVを配列に変換(簡易版)
const csv = `名前,年齢,職業
田中太郎,30,エンジニア
佐藤花子,25,デザイナー`;

const rows = csv.split("\n").map(row => row.split(","));
console.log(rows[1]); // ["田中太郎", "30", "エンジニア"]

Python

import csv

# 読み込み
with open("data.csv", encoding="utf-8") as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

# 書き込み(BOM付きUTF-8)
with open("output.csv", "w", encoding="utf-8-sig", newline="") as f:
    writer = csv.writer(f)
    writer.writerow(["名前", "年齢", "職業"])
    writer.writerow(["田中太郎", 30, "エンジニア"])

Pythonでは encoding="utf-8-sig" を指定するだけでBOM付きUTF-8で出力できます。

CSVデータをテーブル形式で表示してみましょう

CSVテーブル変換ツールを使ってみる

まとめ

CSVファイルは、カンマで区切られたシンプルなテキスト形式です。ほぼすべてのツールやプログラミング言語で扱えるため、データの受け渡しに広く使われています。

最大の注意点は文字コードの問題です。日本語CSVをExcelで開く場合は「UTF-8 BOM付き」で保存するのがベストプラクティスです。また、区切り文字やクォーテーションのルールを理解しておくと、データ処理のトラブルを防げます。当サイトのCSVテーブル変換ツールで、CSVデータの構造を視覚的に確認してみてください。