CSVファイルを扱うとき、避けて通れないのが「文字コード」の問題です。UTF-8とShift_JIS——この2つの文字コードの違いを正しく理解しておけば、文字化けトラブルの大半を未然に防げます。この記事では、文字コードの基本からCSVでの実践的な使い分けまで解説します。
文字コードとは何か
コンピュータが文字を扱う仕組み
コンピュータは内部ですべてのデータを数値(0と1の列)として処理しています。文字コードとは、「どの数値をどの文字に対応させるか」を定めたルール(規格)のことです。
たとえば「あ」という文字は、UTF-8では「E3 81 82」という3バイトの数値、Shift_JISでは「82 A0」という2バイトの数値で表現されます。同じ文字でも文字コードが違えば数値が異なるため、書き出したときと異なる文字コードで読み込むと文字化けが発生します。
代表的な文字コード一覧
| 文字コード | 正式名称 | 策定時期 | 特徴 |
|---|---|---|---|
| UTF-8 | Unicode Transformation Format - 8bit | 1993年 | 世界中の文字を扱える国際標準 |
| Shift_JIS | Shift Japanese Industrial Standards | 1982年 | 日本語向けに設計された文字コード |
| EUC-JP | Extended Unix Code for Japanese | 1985年 | Unix/Linux環境で使われた日本語用コード |
| ISO-2022-JP | — | 1993年 | メール用の日本語エンコーディング |
現在のWeb・ビジネス環境で主に使われるのは UTF-8 と Shift_JIS の2つです。
UTF-8とShift_JISの違い
比較表
| 比較項目 | UTF-8 | Shift_JIS |
|---|---|---|
| 対応文字数 | 約14万文字(全世界の文字) | 約7,000文字(日本語中心) |
| 日本語1文字のサイズ | 3バイト | 2バイト |
| 英数字1文字のサイズ | 1バイト | 1バイト |
| Webサイトでの採用率 | 98%以上 | ごくわずか |
| WindowsのExcel | BOM付きなら対応 | 標準で対応 |
| Mac / Linux | 標準 | 要変換 |
| プログラミング言語 | 標準 | レガシー対応 |
UTF-8の特徴
UTF-8はUnicodeを実装する文字コードで、世界中のあらゆる文字を1つのエンコーディングで表現できます。現在のWebサイトの98%以上がUTF-8を採用しており、事実上の国際標準です。
英数字は1バイト、日本語は3バイトで表現されるため、日本語の多いファイルはShift_JISよりサイズがやや大きくなります。ただし、絵文字や中国語・韓国語など多言語が混在するデータも問題なく扱えるのが強みです。
Shift_JISの特徴
Shift_JISは1982年にマイクロソフトとアスキーが策定した、日本語処理に特化した文字コードです。WindowsのExcelやレガシーな業務システムでは今でも広く使われています。
日本語を2バイトで表現するため、日本語中心のファイルではUTF-8よりコンパクトです。ただし、「①②③」「髙」「﨑」などの環境依存文字(機種依存文字)や、外国語の文字は扱えない制限があります。
BOM(バイトオーダーマーク)とは
BOMとは、ファイル先頭に付与される数バイトの識別子で、テキストの文字コードをソフトウェアに知らせる役割を持ちます。UTF-8のBOMは「EF BB BF」の3バイトです。
| 種類 | 先頭バイト | Excelでの動作 |
|---|---|---|
| UTF-8(BOMなし) | なし | Shift_JISとして読み込み → 文字化け |
| UTF-8(BOM付き) | EF BB BF | UTF-8として正しく読み込み |
| Shift_JIS | なし | そのまま正しく読み込み |
ExcelでCSVを開く用途なら「BOM付きUTF-8」または「Shift_JIS」を選ぶと安全です。
実務での文字コードの選び方
Shift_JISを選ぶべきケース
- WindowsのExcelでCSVを直接開きたい場合
- 社内の業務システム(勤怠管理、会計ソフト等)がShift_JIS指定の場合
- 取引先からShift_JISで提出を求められた場合
UTF-8を選ぶべきケース
- Webサービスにアップロードする場合(ほとんどがUTF-8対応)
- Python・JavaScript等のプログラムで処理する場合
- 多言語データ(中国語・韓国語等)を含む場合
- GoogleスプレッドシートやMacで使用する場合
迷ったらUTF-8を基本に
新規にCSVを作成するなら、UTF-8を基本にするのがおすすめです。世界標準で対応範囲が広く、Shift_JISが必要な場面ではツールで変換すれば済みます。
よくある質問(FAQ)
UTF-8とShift_JISはどちらを使うべきですか?
基本はUTF-8を推奨します。ただし、WindowsのExcelでCSVを直接開く場合はShift_JISの方が確実です。sakuttoのCSV文字コード変換ツールを使えば、いつでもUTF-8⇔Shift_JISを相互変換できます。
CSVの文字コードを確認する方法はありますか?
Windowsならメモ帳でファイルを開くと、画面右下に「UTF-8」や「ANSI(= Shift_JIS)」と表示されます。Macではターミナルで file -i ファイル名.csv コマンドを実行すると確認できます。sakuttoのCSVビューアでも自動判定できます。
UTF-8のBOM付きとBOMなしの違いは何ですか?
BOM(Byte Order Mark)はファイル先頭の3バイト(EF BB BF)の目印です。WindowsのExcelはBOMを見てUTF-8と判定するため、BOM付きならExcelで文字化けしません。一方、プログラムで処理する場合はBOMなしが推奨されます。
Shift_JISとCP932(Windows-31J)は同じものですか?
厳密には異なります。CP932はマイクロソフトがShift_JISを拡張した文字コードで、「①②③」「Ⅰ Ⅱ Ⅲ」などの記号が追加されています。Windowsで「Shift_JIS」と呼ばれるものは、実際にはCP932であることがほとんどです。
文字コード変換でデータが壊れることはありますか?
Shift_JISからUTF-8への変換では、元のデータは完全に保持されます。逆にUTF-8からShift_JISへ変換する場合、Shift_JISで表現できない文字(絵文字や一部の漢字)は「?」に置換される可能性があります。sakuttoのCSV文字コード変換ツールはブラウザ内で処理されるため、ファイルがサーバーに送信されることはありません。
まとめ
UTF-8は世界標準で対応範囲が広く、Shift_JISはWindowsのExcelとの相性が良い日本語向けの文字コードです。CSVファイルの文字化けは、この2つの文字コードの不一致が原因です。用途に応じて適切な文字コードを選び、必要に応じて変換することで、文字化けトラブルを防げます。