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に変換する場合に使用します。

試してみる — CSV ↔ JSON Converter

フルツールを開く