CSVの文字エンコーディング:UTF-8、Shift-JIS、その他
CSVファイル解析時の異なる文字エンコーディングの処理方法。UTF-8、UTF-8 BOM、Shift-JIS、Latin-1、エンコーディング検出戦略を解説。
Data Types
詳細な説明
CSVファイルの文字エンコーディング
CSVファイルには組み込みのエンコーディング宣言がありません。ファイルは生のバイト列であり、パーサーはそれらのバイトをテキストとして解釈するために正しいエンコーディングを知っているか推測する必要があります。
一般的なCSVエンコーディング
| エンコーディング | 使用元 | 備考 |
|---|---|---|
| UTF-8 | モダンツール、API、Web | ユニバーサル、すべてのUnicode文字をサポート |
| UTF-8 with BOM | Excel (Windows) | バイトEF BB BFで始まる |
| Shift-JIS | 日本のレガシーシステム | Windowsコードページ932 |
| ISO-8859-1 | ヨーロッパのレガシーシステム | シングルバイト、0-255 |
BOMの問題
Windows上のMicrosoft ExcelはUTF-8 BOM(バイトオーダーマーク)付きでCSVファイルを保存します。パーサーがBOMをストリップしない場合、最初のヘッダー名が破損します。解析前に必ずBOMをチェックしてストリップしてください。
Shift-JISと日本語CSVファイル
日本のシステム(政府データ、銀行エクスポート、レガシーERP)からのCSVファイルはShift-JISエンコーディングを使用することがよくあります。モダンブラウザはTextDecoder APIを通じてデコードをサポートしています:
const decoder = new TextDecoder("shift-jis");
const text = decoder.decode(arrayBuffer);
Shift-JISファイルをUTF-8としてデコードすると、日本語文字が文字化けします。解析前に必ずエンコーディングを確認してください。
JSON出力のエンコーディング
入力CSVのエンコーディングに関係なく、JSON出力は常にUTF-8であるべきです。JSONはRFC 8259によりUTF-8として定義されています。
ユースケース
Shift-JISエンコーディングで公開されている日本の政府オープンデータCSVファイルを処理し、多言語Webアプリケーション用のUTF-8 JSONに変換する場合に使用します。