「ファイルが壊れている」は、たいてい 5 つのうちのどれかを指しています。どれなのかを見分けることが仕事の大半です。直し方が型ごとに違い、間違った直し方を当てると状態が悪くなるからです。
全体を通しての前提として、調べるためにファイルを表計算ソフトで開かないでください。 Excel の取り込みは、あなたが目を通す前に値を変えてしまいます。そうなると、最初の問題の上にもう 1 つ問題を重ねた状態で診断することになります。
1. 列数の合わない行
見え方: ほとんどの行は列数が揃っているのに、いくつかの行だけ多い、あるいは少ない。ある位置から後ろの値が、間違った列に入っている。
起きたこと: あるセルにタブ文字が入り込みました。たいていはよそから貼り付けたものです。そのタブ 1 つが列の境目として読まれるため、その行だけ列が 1 つ増え、それより後ろがすべて 1 つずつ右へずれました。
直し方: その行を見つけ、分かれてしまったセルを見つけ、つなぎ直します。タブを消すか、そのセルを引用符で囲むかのどちらかです。ヘッダーより短い行は逆の場合で、保存時に末尾の空セルが切り落とされたことがほとんどです。空セルを補って揃え直すのは安全な操作です。
やってはいけないのは、余分な列をファイル全体から削除することです。ほかの行は正常であり、その操作は正常な行の最後の列まで道連れにします。
2. 目に見えない空白
見え方: 何も見えません。2 つの値が同一に見えるのに、参照が失敗し、結合が一致せず、翻訳キーが見つかりません。
起きたこと: 次のどれかがセルに入っています。
- キーの末尾の半角スペース。1 文字多く拾ってしまったコピー&ペーストが原因であることがほとんどです。
- 普通の空白であるべきところに入った改行なしスペース(
U+00A0)。Web ページやワープロから貼り付けたときに紛れ込みます。 - 全角スペース(
U+3000)。日本語入力のまま打って、そのまま残ったものです。幅の広いすきまに見えますが、半角スペースとはまったく別の文字です。 - 幅ゼロの文字(
U+200B、U+FEFF)。見た目としての現れが一切ありません。
直し方: これらを目に見える形で描いてくれる道具が要ります。定義上、目で見つけることはできないからです。そのうえで削るか置き換えます。セルを 1 つずつではなく、ファイル全体に対して 1 回の操作として行ってください。そうしないと、見つかった 3 つを直して、見つからなかった 40 個をそのまま残すことになります。
3. 文字化け
見え方: é のはずのところに é、ダッシュのはずのところに â€"、あるいは � が散らばっている。日本語なら「縺ゅ>縺・∴」のような、ひらがなでも漢字でもない並び。
起きたこと: ある文字コードで書かれたファイルを、別の文字コードとして読みました。日本語で圧倒的に多い組み合わせは、UTF-8 のバイト列を Shift_JIS として読むか、その逆です。é は、UTF-8 のバイト列を windows-1252 として読んだ場合に出ます。
直し方: 正しい文字コードでファイルを開き直してください。壊れた文字を検索と置換で直そうとしてはいけません。置換は、目に見えている例だけを直して、影響を受けたほかの文字をすべて残します。そして、読み込みの段階で � に置き換わってしまった文字は、置換では取り戻せません。
読み違えたまま一度保存してしまった場合、元のバイト列は本当に失われている可能性があります。書き出し元が残っているなら、そこまで戻ってください。
4. 引用符の崩れ
見え方: 1 つの行が異常に長く、本来なら次の 20 行分にあたる内容がその中に入っている。あるいは、値の途中に、そこにあるはずのない引用符が現れる。
起きたこと: あるセルが二重引用符を開いたまま閉じなかったため、パーサーがそれ以降を——改行も含めて——その 1 つのセルの一部として扱いました。
直し方: おかしくなった最初の行を見つけます。釣り合っていない引用符は、その行の先頭にあります。閉じるか、取り除くかのどちらかです。テキストエディタが本当に役に立つ数少ない場面の 1 つです。探しているのは 1 文字であり、それがどのあたりにあるかも分かっているからです。
5. キーの重複、またはキーの欠落
見え方: 同じ識別子を持つ行が 2 つある。あるいは、キーの列が空の行がある。
起きたこと: たいていはマージ、2 回走ってしまった追記、あるいはセルを消してしまった手作業の編集です。
直し方: これはどんな道具も代わりにできません。できると言う道具は、推測しています。その重複が、消すべき複製なのか、優先されるべき新しい値なのか、たまたま同じ名前を与えられた別々の 2 つなのか。それを知っているのはあなただけです。道具がすべきことは、それらを見つけて、そこまで連れて行くことです。自動的な修復は、まさにそこで止まるべきです。
作業の順番
- まず文字コードを直します。 ほかのすべての作業はテキストの上に載るものであり、テキストが間違っていれば、間違った文字を直すことになります。
- 次に構造 — 引用符、それから列数です。どちらも列の境目がどこにあるかを変えるので、これが落ち着くまで、列について何ひとつ信用できません。
- それから中身 — 空白、それから重複です。これらはセル単位であり、まとめて処理しても安全です。
- 元の設定のまま書き出します。 同じ改行コード、同じ BOM、同じ引用符の付け方で。
CRLFを黙ってLFに変えてしまう修復は、次にそれを読むものにとってファイルを壊したのと同じです。
ここでやる場合
このサイトのエディタは、まさにこの一覧を軸に作られています。ファイルを開くと、見つかったものを報告します。列数の合わない行、見つかった不可視文字とその正確なコードポイント、文字コード、キーの重複。空白は表の中の、まさにその位置に描かれるので、末尾の半角スペースは推測するものではなく、目で見えるものになります。
自動化しても安全な修復は、ファイル全体に対する 1 つの操作として提示され、取り消しの履歴では 1 ステップに収まります。ですから試してみる代償はありません。安全でない修復——とりわけキーの重複——は、指し示すだけで、手を触れません。
アップロードはありません。ファイルを読み、直し、書き出しているのは、あなたのブラウザです。