← 道具箱のトップ
CSV文字コード変換・診断
CSVを表で開いて、文字コードと区切り文字を判定し、壊れている場所を行と列で指します。
ファイルはブラウザの中だけで読まれ、どこにも送信されません(顧客名簿でも外に出ません)。
読み取り結果
区切り文字
プレビュー
列数が見出しと違う行と、引用が壊れている場所には色を付けています。表示は先頭500行までです。
書き出し
正規化=RFC 4180 の書き方に揃えます(改行は CRLF、必要なフィールドだけを " で囲み、
中の " は "" にする)。BOM付きを選ぶと、Excelで開いても日本語が化けません。
この道具が何を見ているか(と、見ていないこと)
- 文字コードの判定: まずBOMを見ます。無ければ
UTF-8 / Shift_JIS(Windows-31J) / EUC-JP / UTF-16 のそれぞれで厳密に復号を試し、
1バイトでも規則に反したらその候補を落とします。生き残りが複数あるときは、
ひらがな・カタカナ・漢字・ASCIIの割合で選びます。判定した理由は画面に出します。
ASCIIだけのファイルはどの候補でも同じ結果になるので、UTF-8 と表示します。
- 区切り文字の推定:
, タブ ; | の
4つで全行を実際に解析し、行ごとの列数が最もそろうものを選びます。
引用符の中の区切り文字は数えません(「東京都, 千代田区」を2列と誤解しない)。
- 壊れ方の指摘: 引用符の閉じ忘れ、引用の終わりの直後にある余計な文字、
見出しと列数が違う行、改行コードの混在、行末の空白、見出しの重複、まったく同じ行の重複。
位置はファイルの行番号で出します(引用の中に改行があるレコードは複数行にまたがるので、
「レコード番号」とはずれます。そのずれも表示します)。
- Excelで壊れる列の警告: 先頭が0の数字(
0123 は郵便番号や電話番号でよく使う)、
日付として読まれてしまう形(1-2 3/4)、
16桁を超える数字(後ろが0に丸められる)、= で始まる値(数式として実行される)。
これらはCSV自体は正しいのにExcelが勝手に変える箇所なので、警告として分けています。
- 見ていないこと: 中身が業務的に正しいか(重複した顧客IDが本当に間違いか等)は判断しません。
また、100MBを超えるような巨大ファイルは想定していません(全部メモリに載せます)。
- 確かめかた: 解析結果は Python の
csv モジュールを基準に、
ランダムに作った 800 ファイル・17,010 セルで突き合わせ検証しています。
検証スクリプトはソース側に置いてあります。