データの受け渡しやシステム間の連携でよく使われる「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ファイルを開く場合は、以下の手順で文字コードを指定できます。
- Excelを開き、「データ」タブをクリック
- 「テキストまたはCSVから」を選択
- ファイルを選択すると、プレビュー画面が表示される
- 「元のファイル」のドロップダウンで「65001: Unicode (UTF-8)」を選択
- プレビューで文字化けが解消されていることを確認して「読み込み」
方法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データの構造を視覚的に確認してみてください。